Ce tutoriel vous aidera à appeler votre propre API à l’aide du Hybrid Flow. Si vous souhaitez comprendre le fonctionnement de ce flux et pourquoi l’utiliser, consultez Hybrid Flow.
- Authentication API : Si vous préférez créer votre propre solution, poursuivez votre lecture pour découvrir comment appeler directement notre API.
Prérequis
-
Enregistrez votre application dans Auth0.
- Sélectionnez le Application Type approprié.
- Ajoutez une Allowed Callback URL de
{https://yourApp/callback}. - Assurez-vous que les Grant Types de votre application incluent Implicit et Authorization Code. Pour savoir comment faire, consultez Update Grant Types.
- 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 Update Grant Types. Pour en savoir plus sur les Jetons d’actualisation, consultez Refresh Tokens.
-
Enregistrez votre API dans Auth0
- Si vous voulez que votre API reçoive des Jetons d’actualisation afin d’obtenir de nouveaux jetons lorsque les précédents expirent, activez Allow Offline Access.
Étapes
- Autoriser l’utilisateur: Demandez à l’utilisateur d’autoriser l’accès, puis redirigez-le vers votre application avec un code d’autorisation.
- 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.
- Authentifier l’utilisateur
- Rediriger l’utilisateur vers un pour prendre en charge l’authentification
- Vérifier s’il existe des sessions d’ (SSO) actives
- Obtenir le consentement de l’utilisateur pour le niveau d’autorisation demandé, sauf si ce consentement a déjà été accordé.
Paramètres
- devez inclure un paramètre
- pouvez inclure des scopes supplémentaires pris en charge par l’API cible
À titre d’exemple, votre extrait HTML pour l’URL d’autorisation lors de l’ajout de la connexion à votre application pourrait ressembler à ceci :
Réponse
HTTP 302. Les identifiants demandés sont encodés dans le corps de la réponse :
response_type.
Auth0 renverra également toute valeur state que vous avez incluse dans votre appel à l’URL d’autorisation.
Lorsque vous décodez et analysez votre , vous remarquerez une revendication supplémentaire,
c_hash, qui contient un hash du code. Cette revendication est obligatoire lorsqu’un jeton d’identité est émis en même temps qu’un code, et vous devriez la valider :
- À l’aide de l’algorithme de hachage indiqué dans la revendication
algde l’en-tête du ID Token, hachez les octets de la représentation ASCII ducode. - Encodez en Base64url la moitié gauche du hash.
- Vérifiez que le résultat correspond à la valeur
c_hash.
Obtenir des jetons
code) extrait à l’étape précédente, vous devez envoyer une requête POST à l’URL du jeton.
Le que vous recevez à cette étape est celui que vous devez utiliser pour appeler votre API. Assurez-vous de le conserver séparément du Jeton d’accès reçu à l’étape précédente de ce tutoriel.
Exemple de requête POST à l’URL du jeton
Paramètres
Réponse
HTTP 200 avec un payload contenant les valeurs access_token, refresh_token, id_token et token_type :
refresh_token ne sera présent dans la réponse que si vous avez inclus le scope offline_access et activé Allow Offline Access pour votre API dans l’Auth0 Dashboard.
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 d’autorisation.
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
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. Si le scope du jeton initial comprenait openid, la réponse comprendra également un nouvel id_token :