Authentifier un utilisateur et demander des claims standards
-
Lancez le flux d’authentification en envoyant l’utilisateur vers l’URL d’autorisation :
Remarquez que, dans cet exemple :
-
Le paramètre
response_typecontient une valeur :code: comme nous utilisons le flux standard pour les applications Web, notre demande initiale vise à obtenir un code d’autorisation; lorsque nous demanderons nos jetons à l’aide de ce code, nous recevrons le jeton d’identité dont nous avons besoin pour l’authentification.
-
Le paramètre
scopecontient trois valeurs : les scopes OIDC demandés :openid: pour indiquer que l’application compte utiliser OIDC afin de vérifier l’identité de l’utilisateur.profile: pour obtenirname,nicknameetpicture.email: pour obteniremailetemail_verified.
-
Le paramètre
- Une fois que l’utilisateur a consenti (au besoin) et qu’Auth0 l’a redirigé vers votre application, demandez les jetons.
- Extrayez le jeton d’identité de la réponse et décodez-le. Vous devriez voir les claims suivantes : Votre application peut maintenant récupérer les attributs de l’utilisateur et les utiliser pour personnaliser votre interface utilisateur.
Demander l’accès à une API personnalisée
-
Lancez le flux d’autorisation en dirigeant l’utilisateur vers l’URL d’autorisation :
Notez que dans cet exemple :
-
Le paramètre
response_typeinclut toujours une valeur :code: puisque nous utilisons le flux d’application Web classique, notre demande initiale vise un code d’autorisation; lorsque nous demanderons nos jetons à l’aide de ce code, nous recevrons le Jeton d’accès que nous pourrons utiliser pour appeler notre API.
-
le paramètre
scopeinclut une valeur; le scope d’API demandé :read:appointments: pour nous permettre de lire les rendez-vous de l’utilisateur à partir de l’API.
-
Le paramètre
audienceest nouveau et inclut une valeur :- L’identifiant unique de l’API à partir de laquelle nous voulons lire les rendez-vous de l’utilisateur.
-
Le paramètre
- Comme dans l’exemple précédent, une fois que l’utilisateur a donné son consentement (au besoin) et qu’Auth0 a redirigé vers votre application, demandez des jetons.
- Extrayez le jeton d’accès de la réponse, puis appelez l’API en utilisant le jeton d’accès comme information d’identification.
Authentifier un utilisateur et demander des claims standard ainsi qu’un accès à une API personnalisée
-
Jeton d’identité qui contient :
- Nom de l’utilisateur
- Surnom
- Photo de profil
- Renseignements sur le courriel
- Jeton d’accès qui contient le scope approprié pour lire les rendez-vous à partir de l’API. Notez que la demande d’un jeton d’accès ne dépend pas de la demande d’un jeton d’identité.
-
Démarrez le flux d’authentification en envoyant l’utilisateur vers l’URL d’autorisation :
Notez que, dans cet exemple :
-
Le paramètre
response_typeinclut toujours une seule valeur :code: parce que nous utilisons le flux normal d’application Web, notre demande initiale vise un code d’autorisation; lorsque nous demanderons nos jetons à l’aide de ce code, nous recevrons à la fois le jeton d’identité dont nous avons besoin pour l’authentification et le jeton d’accès que nous pourrons utiliser pour appeler notre API.
-
Le paramètre
scopeest utilisé à la fois pour les scopes OIDC et les scopes d’API; il inclut donc maintenant quatre valeurs :openid: pour indiquer que l’application a l’intention d’utiliser OIDC pour vérifier l’identité de l’utilisateur.profile: pour obtenirname,nicknameetpicture.email: pour obteniremailetemail_verified.read:appointments: pour nous permettre de lire les rendez-vous de l’utilisateur à partir de l’API.
-
Le paramètre
audienceinclut une valeur :- L’identifiant unique de l’API à partir de laquelle nous voulons lire les rendez-vous de l’utilisateur
-
Le paramètre
- Comme dans les exemples précédents, après que l’utilisateur a donné son consentement (au besoin) et qu’Auth0 l’a redirigé vers votre application, demandez les jetons.
- Extrayez le jeton d’identité de la réponse, décodez-le, récupérez les attributs de l’utilisateur et utilisez-les pour personnaliser votre interface utilisateur.
- Extrayez le jeton d’accès de la réponse et appelez l’API en utilisant le jeton d’accès comme informations d’identification.
Ajouter des claims personnalisés à un jeton
/userinfo (bien que l’Action ne s’exécute que pendant le processus d’authentification).
Auth0 permet les claims avec espace de noms et sans espace de noms, mais certaines restrictions s’appliquent (consultez Restrictions générales). Pour éviter les collisions de noms, nous recommandons d’utiliser des claims avec espace de noms. En cas de collision, la transaction n’échouera pas, mais votre claim personnalisé ne sera pas ajouté à vos jetons.
- À un moment donné, l’utilisateur a choisi la méthode
preferred_contactemailet la valeurfavorite_colorred, puis nous les avons enregistrées dans sonuser_metadata. - Nous avons utilisé la Management API ou le Dashboard pour définir des renseignements propres à l’application pour cet utilisateur.
- La revendication
subcontient la valeur de la propriétéuser_id. - Ni la propriété
favorite_colorni la propriétéuser_metadatane sont présentes, car Connect (OIDC) ne définit pas de claims standard pour représenterfavorite_colorouuser_metadata.
- Accédez à Auth0 Dashboard > Actions > Library, puis sélectionnez Build Custom.
-
Saisissez un Name descriptif pour votre Action (par exemple,
Add user metadata to tokens), sélectionnez le déclencheurLogin / Post Loginpuisque vous ajouterez l’Action au flux Login, puis sélectionnez Create. -
Repérez l’éditeur de code Actions, copiez-y le code JavaScript suivant, puis sélectionnez Save Draft pour enregistrer vos modifications :
- Dans la barre latérale de l’éditeur de code Actions, sélectionnez Test (icône de lecture), puis sélectionnez Run pour tester votre code.
- Lorsque vous êtes prêt à déployer l’Action, sélectionnez Deploy.
favorite_color et preferred_contact dans le ID Token :
api.idToken.setCustomClaims. Pour ajouter ces claims à un Jeton d’accès, utilisez la méthode api.accessToken.setCustomClaim.
Pour en savoir plus sur l’objet event du déclencheur, consultez Déclencheurs Actions : post-login - objet event. Pour en savoir plus sur les jetons, consultez Jetons.