Overview
Concepts clés
- Auth0 prend en charge le protocole OAuth 2.0 rédigé par l’Internet Engineering Task Force (IETF).
- Découvrez les rôles, les types d’octroi (ou flux) et les points de terminaison de la spécification OAuth 2.0.
Rôles
- Propriétaire de la ressource : Entité pouvant accorder l’accès à une ressource protégée. Il s’agit généralement de l’utilisateur final.
- Serveur de ressources : Serveur qui héberge les ressources protégées. Il s’agit de l’API à laquelle vous souhaitez accéder.
- Application : Application qui demande l’accès à une ressource protégée au nom du propriétaire de la ressource.
- Serveur d’autorisation : Serveur qui authentifie le propriétaire de la ressource et émet des jetons d’accès après avoir obtenu l’autorisation appropriée. Dans ce cas, il s’agit d’Auth0.
Types d’octroi
- Flux du code d’autorisation : utilisé par les applications Web exécutées sur un serveur. Il est également utilisé par les applications mobiles au moyen de la technique Proof Key for Code Exchange (PKCE).
- Flux implicite avec envoi de formulaire : utilisé par les applications axées sur JavaScript (applications monopages) exécutées dans le navigateur de l’utilisateur.
- Flux avec mot de passe du propriétaire de la ressource : utilisé par les applications hautement fiables.
- Flux des informations d’identification de l’application : utilisé pour les communications de machine à machine.
Points de terminaison
/authorize et /oauth/token.
Le point de terminaison /authorize sert à interagir avec le propriétaire de la ressource et à obtenir l’autorisation d’accéder à la ressource protégée. Pour mieux comprendre, imaginez que vous souhaitez vous connecter à un service à l’aide de votre compte Google. D’abord, le service vous redirige vers Google afin de vous authentifier (si vous n’êtes pas déjà connecté), puis un écran de consentement s’affiche, où l’on vous demande d’autoriser le service à accéder à certaines de vos données (ressources protégées) ; par exemple, votre adresse de courriel et votre liste de contacts.
Les paramètres de requête du point de terminaison /authorize sont les suivants :
| Paramètre | Description |
|---|---|
response_type | Indique au serveur d’autorisation quel type d’octroi exécuter. |
response_mode | (Facultatif) Indique comment le résultat de la requête d’autorisation est mis en forme. Valeurs : - query : pour l’octroi de code d’autorisation. 302 Found déclenche une redirection.- fragment : pour l’octroi implicite. 302 Found déclenche une redirection.- form_post : 200 OK avec les paramètres de réponse intégrés à un formulaire HTML comme paramètres cachés.- web_message : pour l’authentification silencieuse. Utilise la messagerie Web HTML5. |
client_id | L’id de l’application qui demande l’autorisation. |
redirect_uri | Contient une URL. Une réponse réussie de ce point de terminaison entraîne une redirection vers cette URL. |
scope | Une liste de permissions délimitées par des espaces dont l’application a besoin. |
state | Une valeur opaque, utilisée à des fins de sécurité. Si ce paramètre de requête est défini dans la requête, il est renvoyé à l’application dans le redirect_uri. |
connection | Spécifie le type de connexion pour les connexions Passwordless |
/authorize pour authentifier un utilisateur. Vous pouvez utiliser des paramètres de requête personnalisés pour fournir un contexte supplémentaire au modèle de page de l’expérience .
Vous devez activer ID First pour utiliser le paramètre connection. Pour en savoir plus sur le paramètre connection et l’expérience Universal Login, consultez Passwordless for Universal Login.
Les paramètres de requête précédés de ext- apparaissent automatiquement dans le contexte du modèle de page.
Ce point de terminaison est utilisé par les types d’octroi de code d’autorisation et implicite. Le serveur d’autorisation doit savoir quel type d’octroi l’application veut utiliser, puisque cela influe sur le type de justificatif qu’il émettra :
- Pour l’octroi de code d’autorisation, il émettra un code d’autorisation (qui pourra ensuite être échangé contre un jeton d’accès au point de terminaison
/oauth/token). - Pour l’octroi implicite, il émettra un jeton d’accès, qui est une chaîne opaque (ou un dans une implémentation Auth0) qui indique qui a autorisé quelles permissions (scopes) à quelle application.
response_type est utilisé comme suit :
- Pour l’octroi de code d’autorisation, utilisez
response_type=codepour inclure le code d’autorisation. - Pour l’octroi implicite, utilisez
response_type=tokenpour inclure un jeton d’accès. Une autre possibilité consiste à utiliserresponse_type=id_token tokenpour inclure à la fois un jeton d’accès et un .
response_mode. Il est facultatif et peut prendre les valeurs suivantes :
| Valeur | Description |
|---|---|
query | Il s’agit du mode par défaut pour l’octroi de code d’autorisation. Une réponse réussie est 302 Found, ce qui déclenche une redirection vers le redirect_uri. Les paramètres de réponse sont inclus dans la composante de requête (la partie après ?) du redirect_uri, dans l’en-tête Location.Par exemple : HTTP/1.1 302 FoundLocation: https://my-redirect-uri.callback?code=js89p2x1 où le code d’autorisation est js89p21. |
fragment | Il s’agit du mode par défaut pour l’octroi implicite. Une réponse réussie est 302 Found, ce qui déclenche une redirection vers le redirect_uri (qui est un paramètre de la requête). Les paramètres de réponse sont inclus dans la composante de fragment (la partie après #) du redirect_uri, dans l’en-tête Location.Par exemple : HTTP/1.1 302 FoundLocation: https://my-redirect-uri/callback#access_token=eyB...78f&token_type=Bearer&expires_in=3600. |
form_post | Le mode de réponse est défini par la spécification OAuth 2.0 Form Post Response Mode. Une réponse réussie est 200 OK, et les paramètres sont intégrés à un formulaire HTML en tant que paramètres masqués. L’attribut action du formulaire correspond au redirect_uri, et l’attribut onload est configuré pour soumettre le formulaire. Une fois le HTML chargé par le navigateur, une redirection vers le redirect_uri est effectuée. |
web_message | Ce mode de réponse est défini dans la spécification OAuth 2.0 Web Message Response Mode. Il utilise la messagerie Web HTML5 au lieu d’une redirection pour transmettre la réponse d’autorisation depuis le point de terminaison /authorization. Cela est particulièrement utile lorsque vous utilisez l’authentification silencieuse. Pour utiliser ce mode de réponse, vous devez enregistrer l’URL de votre application dans le champ Allowed Web Origins des paramètres de l’application dans Auth0. |
Point de terminaison de jeton
/oauth/token est utilisé par l’application pour obtenir un jeton d’accès ou un . Il est utilisé dans tous les flux, sauf le flux implicite, puisque dans ce cas, un jeton d’accès est émis directement.
- Dans le flux de code d’autorisation, l’application échange le code d’autorisation obtenu auprès du point de terminaison d’autorisation contre un jeton d’accès.
- Dans le flux d’identifiants du client et l’échange de subvention avec identifiants du mot de passe du propriétaire de la ressource, l’application s’authentifie à l’aide d’un ensemble d’identifiants, puis obtient un jeton d’accès.
Paramètres state
state qui vous permet de restaurer l’état précédent de votre application. Le paramètre state conserve un objet d’état défini par l’application dans la requête d’autorisation et le rend accessible à l’application dans la réponse. La principale raison d’utiliser le paramètre state est d’atténuer les attaques CSRF. Consultez Utiliser les paramètres state d’OAuth 2.0 pour en savoir plus.