Authentifier un utilisateur et faire des demandes standard
Dans cet exemple, nous souhaitons authentifier un utilisateur et obtenir des détails sur cet utilisateur qui nous permettront de personnaliser notre interface utilisateur. Pour ce faire, nous devons obtenir un jeton d’ID contenant le nom, le surnom, la photo de profil et les informations de courrier électronique de l’utilisateur.-
Lancer le flux d’authentification en envoyant l’utilisateur à l’URL d’autorisation :
Notez que dans cet exemple :
-
Le paramètre
response_type
comprend une valeur :code
: parce que nous utilisons le flux d’application Web standard, notre demande initiale concerne un code d’autorisation; lorsque nous demandons nos jetons à l’aide de ce code, nous recevons le jeton d’ID dont nous avons besoin pour l’authentification.
-
Le paramètre
scope
comprend trois valeurs; les permissions OIDC demandées :openid
: pour indiquer que l’application a l’intention d’utiliser OIDC pour vérifier l’identité de l’utilisateur.profile
: pour obtenir lename
, lenickname
et lapicture
.email
: pour accéder àemail
etemail_verified
.
-
Le paramètre
- Une fois que l’utilisateur a consenti (si nécessaire) et qu’Auth0 a redirigé vers votre application, demandez des jetons.
-
Extrayez le jeton d’ID de la réponse et décodez-le. Vous devriez voir les demandes suivantes :
Votre application peut désormais récupérer les attributs utilisateur et les utiliser pour personnaliser votre interface utilisateur.
Demander un accès API personnalisé
Dans cet exemple, nous demandons une permission personnalisée pour une API de calendrier qui autorisera l’application appelante à lire les rendez-vous de l’utilisateur. Pour ce faire, nous souhaitons obtenir un jeton d’accès contenant la permission appropriée 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’ID. Avant d’utiliser une API personnalisée, vous devez savoir quelles permissions sont disponibles pour l’API que vous appelez. Si l’API personnalisée est sous votre contrôle, vous devez enregistrer à la fois votre application et votre API auprès d’Auth0 et définir les permissions de votre API à l’aide d’Auth0 Dashboard. Vous pouvez également utiliser des permissions définies pour personnaliser l’invite de consentement pour vos utilisateurs.-
Lancer le flux d’autorisation en envoyant l’utilisateur à l’URL d’autorisation :
Notez que dans cet exemple :
-
Le paramètre
response_type
comprend toujours une valeur :code
: parce que nous utilisons le flux d’application Web standard, notre demande initiale concerne un code d’autorisation; lorsque nous demandons nos jetons à l’aide de ce code, nous recevons le jeton d’accès que nous pouvons utiliser pour appeler notre API.
-
Le paramètre
scope
comprend une valeur; les permissions API demandées :read:appointments
: pour nous permettre de lire les rendez-vous de l’utilisateur depuis l’API.
-
Le paramètre
audience
est nouveau et comprend une valeur :- L’identifiant unique de l’API à partir duquel nous souhaitons lire les rendez-vous de l’utilisateur.
-
Le paramètre
- Comme dans l’exemple précédent, une fois que l’utilisateur a consenti (si nécessaire) et qu’Auth0 a redirigé vers votre application, demandez des jetons.
- 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.
Authentifier un utilisateur et faire des demandes standard et un personnalisé à une API
Dans cet exemple, nous combinons nos deux exemples précédents pour authentifier un utilisateur, faire des demandes standard et également demander une permission personnalisée pour une API de calendrier qui permettra à l’application appelante de lire les rendez-vous de l’utilisateur. Pour cela, obtenez deux jetons :-
Un jeton d’ID qui contient :
- Nom d’utilisateur
- Surnom
- Photo du profil
- Informations de courriel
- Jeton d’accès contenant la permission appropriée 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’ID.
-
Lancer le flux d’authentification en envoyant l’utilisateur à l’URL d’autorisation :
Notez que dans cet exemple :
-
Le paramètre
response_type
comprend toujours une valeur :code
: parce que nous utilisons le flux d’application Web standard, notre demande initiale concerne un code d’autorisation; lorsque nous demandons nos jetons à l’aide de ce code, nous recevons le jeton d’ID dont nous avons besoin pour l’authentification et le jeton d’accès que nous pouvons utiliser pour appeler notre API.
-
Le paramètre
scope
est utilisé à la fois pour les permissions OIDC et les permissions des 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 obtenir lename
, lenickname
et lapicture
.email
: pour accéder àemail
etemail_verified
.read:appointments
: pour nous permettre de lire les rendez-vous de l’utilisateur depuis l’API.
-
Le paramètre
audience
comprend une valeur :- L’identifiant unique de l’API à partir de laquelle nous souhaitons lire les rendez-vous de l’utilisateur
-
Le paramètre
- Comme dans les exemples précédents, une fois que l’utilisateur a consenti (si nécessaire) et qu’Auth0 a redirigé vers votre application, demandez des jetons.
- Extrayez le jeton d’ID de la réponse, décodez-le, récupérez les attributs 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 demandes personnalisées à un jeton
Dans cet exemple, nous ajoutons la couleur préférée d’un utilisateur et sa méthode de contact préférée au jeton d’ID. Pour cela, nous créons une Action pour personnaliser le jeton d’ID en ajoutant ces demandes. Une fois ajoutées, nous pourrons également obtenir les demandes personnalisées lors de l’appel du point de terminaison/userinfo
(bien que l’Action ne s’exécute que pendant le processus d’authentification).
Auth0 accepte les demandes avec ou sans espace de noms, mais avec certaines restrictions (voir Restrictions générales). Pour éviter les collisions de noms, il est recommandé d’utiliser des demandes avec espace de noms. En cas de collision, la transaction n’échouera pas, mais votre demande personnalisée ne sera pas ajoutée à vos jetons.
- À un moment donné, l’utilisateur a sélectionné une méthode
preferred_contact
d’email
et unefavorite_color``red
et que nous l’avons enregistrée dans le cadre desuser_metadata
de l’utilisateur. - Nous avons utilisé la Management API ou le Dashboard pour définir des informations spécifiques à l’application pour cet utilisateur.
- La demande
sub
contient la valeur de la propriétéuser_id
. - Les propriétés
favorite_color
etuser_metadata
ne sont pas présentes car Connect (OIDC) ne définit pas de demandes standard qui représententfavorite_color
ouuser_metadata
.
- Naviguez vers Auth0 Dashboard > Actions > Bibliothèque et sélectionnez Créer personnalisé.
-
Saisissez un Nom descriptif pour votre Action (par exemple,
Ajouter des métadonnées utilisateur aux jetons
), sélectionnez le déclencheurLogin / Post Login
, car vous allez ajouter l’action au flux de connexion, puis sélectionnez Créer. -
Localisez l’Éditeur de code d’Actions, copiez-y le code JavaScript suivant et sélectionnez Enregistrer le brouillon pour enregistrer vos modifications :
- Dans la barre latérale de l’Éditeur de code d’Actions, sélectionnez Tester (l’icône de lecture), puis sélectionnez Exécuter pour tester votre code.
- Lorsque vous êtes prêt à lancer l’action, sélectionnez Déployer.
favorite_color
et preferred_contact
dans le jeton d’ID :
api.idToken.setCustomClaims
. Pour ajouter ces demandes à un jeton d’accès, utilisez la méthode api.accessToken.setCustomClaim
.
Pour en savoir plus sur l’objet événement du déclencheur, lisez Actions Déclencheurs : post-login - Objet événement. Pour en savoir plus sur les jetons, lisez Jetons.