Ce tutoriel vous aidera à appeler votre propre API à l’aide du Resource Owner Password Flow. Si vous souhaitez comprendre le fonctionnement de ce flux et pourquoi l’utiliser, consultez Resource Owner Password Flow.
Prérequis
-
Enregistrez votre Application auprès d’Auth0.
- Sélectionnez Regular Web Apps comme Application Type.
- Ajoutez
{https://yourApp/callback}comme Allowed Callback URL. Ce champ ne peut pas rester indéfini, sinon un message d’erreur sera renvoyé. - Assurez-vous que les Grant Types de votre Application incluent Password. Pour savoir comment faire, consultez Mettre à jour les type d’octroi.
- Si vous voulez que votre Application puisse utiliser des jetons d’actualisation, assurez-vous que les Grant Types de l’Application incluent jeton d’actualisation. Pour savoir comment faire, consultez Mettre à jour les type d’octroi. Pour en savoir plus sur les jetons d’actualisation, consultez jetons d’actualisation.
-
Enregistrez votre API auprès d’Auth0
- Si vous voulez que votre API reçoive des jetons d’actualisation pour pouvoir obtenir de nouveaux jetons lorsque les précédents expirent, activez Allow Offline Access.
-
Configurez une connexion
- Assurez-vous que votre connexion peut authentifier les utilisateurs avec un nom d’utilisateur et un mot de passe (par exemple, les connexions de base de données, ou les connexions d’entreprise AD/LDAP, ADFS ou Azure Active Directory).
-
Mettez à jour ou désactivez les rules afin qu’elles n’affectent que des connexions précises. Si vous obtenez une erreur
access_denieden testant le Password Owner Resource Grant, cela peut être dû à une règle de contrôle d’accès.
Étapes
- Configurer le tenant:Définissez la connexion par défaut du tenant.
- Obtenir des jetons: Échangez votre code d’autorisation contre des jetons.
- Appeler l’API: Utilisez le jeton d’accès récupéré pour appeler votre API.
- Actualiser les jetons: Utilisez un jeton d’actualisation pour obtenir de nouveaux jetons lorsque les jetons existants expirent.
Configurer le tenant
- Accédez à Auth0 Dashboard > Tenant Settings, puis faites défiler la page jusqu’au paramètre Default Directory.
- Entrez le nom de la connexion que vous souhaitez utiliser. Assurez-vous qu’elle permet d’authentifier les utilisateurs avec un nom d’utilisateur et un mot de passe.
Demander des jetons
POST à l’URL du jeton.
Exemple de requête POST vers l’URL du jeton
Paramètres
Réponse
HTTP 200 avec un payload contenant les valeurs access_token, refresh_token, id_token, token_type et expires_in :
Flux Resource Owner Password et scopes standard
Comme le fait de fournir un mot de passe donne un accès complet, tout échange basé sur un mot de passe donne accès à tous les scopes. Par exemple, si vous n’incluez aucun scope d’API dans la requête, tous les scopes d’API seront inclus dans le jeton d’accès. De même, si vous incluez seulement le scope
openid dans la requête, tous les scopes OpenID Connect standard de openid seront renvoyés. Dans ces cas, le paramètre scope sera inclus dans la réponse et énumérera les scopes émis.Obtenir les informations de l’utilisateur sans jeton d’identité
Si vous avez besoin des informations de l’utilisateur, incluez la portée
openid dans votre requête. Si l’API utilise RS256 comme algorithme de signature, le jeton d’accès inclura /userinfo comme audience valide, ce qui signifie que vous pouvez l’utiliser pour appeler le point de terminaison UserInfo et récupérer les claims de l’utilisateur.Appeler l’API
Jetons d’actualisation
- configuré votre API pour autoriser l’accès hors ligne
- inclus le scope
offline_accesslorsque vous avez lancé la requête d’authentification au moyen du point de terminaison authorize.
POST au point de terminaison /oauth/token dans l’Authentication API, en utilisant grant_type=refresh_token.
Exemple de requête POST vers l’URL du jeton
Paramètres
Réponse
HTTP 200 avec une charge utile contenant un nouvel access_token, sa durée de validité en secondes (expires_in), les valeurs scope accordées et token_type.
Exemples de scénarios d’utilisation
Personnaliser les jetons
Configurer la prise en charge des realms
- Définir le paramètre de requête
grant_typesurhttp://auth0.com/oauth/grant-type/password-realm. - Envoyer un paramètre de requête supplémentaire nommé
realmet le définir sur le nom du realm auquel l’utilisateur appartient. Par exemple, si vous avez configuré une connexion de base de données pour des employés internes nomméeemployeeset que votre utilisateur en fait partie, définissezrealmsuremployees.
Connexions utilisées comme realms
Toute connexion qui prend en charge l’authentification active peut être configurée comme un realm, y compris les connexions de base de données, les connexions sans mot de passe, ainsi que les connexions d’entreprise AD/LDAP, ADFS et Azure Active Directory.