Ajouter une connexion à votre application Ruby on Rails

1

Configuration d’Auth0

Pour utiliser les services Auth0, vous devez avoir une application installée dans Auth0 Dashboard. L’application Auth0 est l’endroit où vous allez configurer le fonctionnement de l’authentification pour le projet que vous développez.

Configurer une application

Utilisez le sélecteur interactif pour créer une nouvelle application Auth0 ou sélectionner une application existante qui représente le projet avec lequel vous souhaitez effectuer l’intégration. Dans Auth0, il est attribué à chaque application un identifiant client unique alphanumérique que votre code d’application utilisera pour appeler les API Auth0 via la trousse SDK.

Tous les paramètres que vous configurez à l’aide de ce guide rapide seront automatiquement mis à jour pour votre application dans le Dashboard, qui est l’endroit où vous pourrez gérer vos applications à l’avenir.

Si vous préférez explorer une configuration complète, consultez plutôt un exemple d’application.

Configurer les URL de rappel

Une URL de rappel est une URL intégrée dans votre application vers laquelle vous souhaitez qu’Auth0 redirige les utilisateurs après leur authentification. Si elle n’est pas définie, les utilisateurs ne seront pas redirigés vers votre application après s’être connectés.

Configuration des URL de déconnexion

Une URL de déconnexion est une URL intégrée dans votre application vers laquelle vous souhaitez qu’Auth0 redirige les utilisateurs après leur déconnexion. Si elle n’est pas définie, les utilisateurs ne pourront pas se déconnecter de votre application et recevront un message d’erreur.

Configurer les origines Web autorisées

Une origine Web autorisée est une URL que vous souhaitez autoriser à accéder à votre flux d’authentification. Elle doit contenir l’URL de votre projet. Si elle n’est pas configurée adéquatement, votre projet ne pourra pas actualiser silencieusement les jetons d’authentification, ce qui entraînera la déconnexion de vos utilisateurs lorsque prochainement ils visiteront votre application ou lors de l’actualisation d’une page.

2

Ajouter des dépendances

Utilisez omniauth-auth0, une stratégie OmniAuth personnalisée, pour gérer le flux d’authentification.

Ajoutez les dépendances suivantes à votre Gemfile :

gem 'omniauth-auth0', '~> 3.0'
gem 'omniauth-rails_csrf_protection', '~> 1.0' # prevents forged authentication requests

Was this helpful?

/

Une fois vos gems ajoutés, installez-les avec la commande bundle install.

3

Configuration de la trousse SDK

Créez un fichier de configuration ./config/auth0.yml pour préciser votre domaine Auth0, votre identifiant client et vos valeurs de secret client situées dans votre Auth0 Dashboard sous les paramètres de l’application.

4

Configurer l’intergiciel OmniAuth

Créez le fichier d’initialisation suivant ./config/initializers/auth0.rb et configurez l’intergiciel OmniAuth avec le fichier de configuration que vous avez créé à l’étape précédente.

Assurez-vous que callback_path correspond à la valeur donnée dans le paramètre des URL de rappel autorisées de votre application Auth0.

5

Ajouter un contrôleur Auth0

Créez un contrôleur Auth0 pour gérer le rappel d’authentification, l’action logout et les méthodes pour créer l’URL de déconnexion.

Exécutez la commande rails generate controller auth0 callback failure logout --skip-assets --skip-helper --skip-routes --skip-template-engine.

Dans la méthode de rappel, assignez le hachage des informations utilisateur, renvoyé en tant que request.env[’omniauth.auth’] à la session active.

Pour configurer la déconnexion, effacez tous les objets stockés dans la session en appelant la méthode reset_session dans l’action logout. Ensuite, redirigez vers le point de terminaison de déconnexion Auth0. Pour en savoir plus sur reset_session, consultez Documentation relative au ActionController Ruby on Rails.

6

Configurer les routes

Ajoutez ces routes à votre fichier ./config/routes.rb.

Les routes doivent être en place afin que Rails sache comment diriger les différentes URL de rappel Auth0 vers le contrôleur Auth0 que vous avez créé à l’étape précédente.

checkpoint.header

Exécutez votre application pour vérifier qu’elle fonctionne toujours comme prévu et que vous ne recevez aucun message d’erreur lié à Auth0.

7

Ajouter une fonctionnalité de connexion à votre application

Un utilisateur peut maintenant se connecter à votre application en visitant le point de terminaison /auth/auth0.

<!-- Place a login button anywhere on your application -->
<%= button_to 'Login', '/auth/auth0', method: :post %>

Was this helpful?

/

checkpoint.header

Ajoutez un bouton à votre application qui redirige l’utilisateur vers le point de terminaison /auth/auth0 lorsqu’il est sélectionné. Observez si vous êtes redirigé vers Auth0 pour vous connecter, puis renvoyé vers votre application après une authentification réussie.

8

Ajoutez une fonctionnalité de déconnexion à votre application

Maintenant que vous pouvez vous connecter à votre application Rails, vous avez besoin d’un moyen de vous déconnecter. Déconnectez un utilisateur en le redirigeant vers l’action auth/logout qui le redirige vers le point de terminaison de déconnexion d’Auth0.

<!-- Place a logout button anywhere on your application -->
<%= button_to 'Logout', 'auth/logout', method: :get %>

Was this helpful?

/

checkpoint.header

Ajoutez un bouton à votre application qui redirige l’utilisateur vers le point de terminaison /auth/logout lorsqu’il est sélectionné. Vérifiez que vous êtes redirigé vers Auth0, puis renvoyé rapidement vers votre application, et que vous n’êtes plus connecté.

9

Afficher les informations du profil utilisateur

Pour afficher le profil utilisateur, votre application doit fournir une route protégée. Vous pouvez utiliser une préoccupation pour contrôler l’accès aux routes qui peuvent être partagées entre plusieurs contrôleurs. La préoccupation devrait rediriger automatiquement vers Auth0 lorsque l’utilisateur n’est pas authentifié. Au cas contraire, la préoccupation devrait renvoyer le profil utilisateur actuel.

Une fois que vous avez une préoccupation, incluez-la dans tout contrôleur qui nécessite un utilisateur connecté. Vous pouvez ensuite accéder à l’utilisateur à partir de la session session[:userinfo] comme dans l’exemple suivant :

class DashboardController < ApplicationController
include Secured
def show
@user = session[:userinfo]

end
end

Was this helpful?

/

Une fois que l’utilisateur a chargé la session, utilisez-la pour afficher des informations dans votre système frontal :

<div>
<p>Normalized User Profile:<%= JSON.pretty_generate(@user[:info])%></p>
<p>Full User Profile:<%= JSON.pretty_generate(@user[:extra][:raw_info])%></p>
</div>

Was this helpful?

/

checkpoint.header

Ajoutez le concern Secured à votre application, puis incluez-le dans le contrôleur qui nécessite un utilisateur authentifié pour y accéder. Vérifiez qu’un utilisateur authentifié a accès aux actions de ce contrôleur et que les utilisateurs non authentifiés sont redirigés vers Auth0 pour l’authentification.

Next Steps

Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.

This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:

Did it work?

Any suggestion or typo?

Edit on GitHub
Sign Up

Sign up for an or to your existing account to integrate directly with your own tenant.