Ce tutoriel vous aidera à appeler votre propre API à l’aide du flux de mot de passe du propriétaire de la ressource. Si vous souhaitez comprendre le fonctionnement de ce flux et pourquoi vous devriez l’utiliser, consultez Flux de mot de passe du propriétaire de la ressource.
Prérequis
-
Enregistrez votre application auprès d’Auth0.
- Sélectionnez un Application Type de Regular Web Apps.
- Ajoutez une Allowed Callback URL de
{https://yourApp/callback}. Ce champ ne peut pas être laissé vide, sinon un message d’erreur sera renvoyé. - Assurez-vous que les Grant Types de votre application incluent Password. Pour savoir comment faire, consultez Update Grant Types.
- Si vous souhaitez que votre application puisse utiliser des Jetons d’actualisation, assurez-vous que les Grant Types de l’application incluent Refresh Token. Pour savoir comment faire, consultez Update Grant Types. Pour en savoir plus sur les Jetons d’actualisation, consultez Refresh Tokens.
-
Enregistrez votre API auprès d’Auth0
- Si vous souhaitez que votre API puisse recevoir des Jetons d’actualisation afin d’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 à l’aide d’un nom d’utilisateur et d’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 d’entreprise).
-
Mettez à jour ou désactivez toutes les Rules afin qu’elles ne s’appliquent qu’à des connexions spécifiques. Si vous obtenez une erreur
access_deniedpendant le test du Password Owner Resource Grant, cela pourrait être dû à une règle de contrôle d’accès.
Étapes
- Configurer le locataire:Définissez la connexion par défaut du locataire.
- Demander des jetons: Échangez votre code d’autorisation contre des jetons.
- Appeler l’API: Utilisez le Jeton d’accès obtenu pour appeler votre API.
- Actualiser les jetons: Utilisez un Jeton d’actualisation pour demander de nouveaux jetons lorsque les jetons actuels expirent.
Configurer le locataire
- Accédez à Auth0 Dashboard > Paramètres du locataire, puis faites défiler la page jusqu’au paramètre Default Directory.
- Saisissez le nom de la connexion que vous souhaitez utiliser. Assurez-vous qu’elle peut authentifier les utilisateurs au moyen d’un nom d’utilisateur et d’un mot de passe.
Obtenir des jetons
POST à l’URL du jeton.
Exemple de requête POST vers l’URL du jeton
Paramètres
| Parameter Name | Description |
|---|---|
grant_type | Définissez cette valeur sur password. |
username | Le nom d’utilisateur saisi par l’utilisateur. |
password | Le mot de passe saisi par l’utilisateur. |
client_id | L’ID client de votre application. Vous trouverez cette valeur dans les paramètres de l’application. |
client_assertion | Un JWT contenant une assertion signée avec les identifiants de votre application. Obligatoire lorsque JWT à clé privée est la méthode d’authentification de votre application. |
client_assertion_type | La valeur est urn:ietf:params:oauth:client-assertion-type:jwt-bearer. Obligatoire lorsque JWT à clé privée est la méthode d’authentification de l’application. |
client_secret | Le Secret client de votre application. Obligatoire lorsque Secret client est la méthode d’authentification de l’application. Dans les paramètres de l’application, cette valeur est Post ou Basic. Si votre application n’est pas hautement fiable (par exemple, une SPA), ne définissez pas ce paramètre. |
audience | L’audience du jeton, qui correspond à votre API. Vous la trouverez dans le champ Identifiant de l’onglet des paramètres de votre API. |
scope | Indique les scopes pour lesquels vous souhaitez demander une autorisation, ce qui détermine quelles claims (ou quels attributs utilisateur) seront renvoyés. Ils doivent être séparés par une espace. Vous pouvez demander n’importe lequel des scopes OpenID Connect (OIDC) standards concernant les utilisateurs, comme profile ou email, des custom claims conformes à un format avec espace de noms, ou tout scope pris en charge par l’API cible (par exemple, read:contacts). Incluez offline_access pour obtenir un Jeton d’actualisation (assurez-vous que le champ Allow Offline Access est activé dans les paramètres de l’application). |
Réponse
HTTP 200 avec un payload contenant les valeurs access_token, refresh_token, id_token, token_type et expires_in :
Flux de mot de passe du propriétaire de la ressource et scopes standard
Comme la fourniture d’un mot de passe donne un accès complet, tout échange fondé 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 seront renvoyés. Dans ces cas, le paramètre scope sera inclus dans la réponse et listera les scopes émis.Obtenir les renseignements de l’utilisateur sans ID Token
Si vous avez besoin des renseignements de l’utilisateur, incluez le scope
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 demande d’authentification au moyen du point de terminaison authorize.
POST au point de terminaison /oauth/token de l’Authentication API, en utilisant grant_type=refresh_token.
Exemple de requête POST à l’URL du jeton
Paramètres
| Nom du paramètre | Description |
|---|---|
grant_type | Définissez cette valeur sur refresh_token. |
client_id | L’ID client de votre application. Vous trouverez cette valeur dans les paramètres de l’application. |
refresh_token | Le jeton d’actualisation à utiliser. |
scope | (facultatif) Une liste des scopes demandés, séparés par des espaces. Si cette valeur n’est pas envoyée, les scopes d’origine seront utilisés; sinon, vous pouvez demander un ensemble réduit de scopes. Notez que cette valeur doit être encodée pour être utilisée dans une URL. |
Réponse
HTTP 200 avec un payload contenant un nouvel access_token, sa durée de validité en secondes (expires_in), les valeurs de scope accordées et le token_type.
Exemples de cas 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 appelé
realmet lui attribuer le nom du realm auquel l’utilisateur appartient. Par exemple, si vous avez configuré une connexion de base de données pour les employés internes nomméeemployees, et que votre utilisateur en fait partie, définissezrealmsuremployees.
Connexions en tant que 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 Passwordless et les connexions d’entreprise AD/LDAP, ADFS et Azure Active Directory.