Skip to main content

Aperçu

Concepts clés
  • Auth0 prend en charge le protocole OAuth 2.0 élaboré par l’Internet Engineering Task Force (IETF).
  • Consultez la spécification OAuth 2.0 pour en savoir plus sur les rôles, les types d’octroi (ou workflows) et les points de terminaison.
Le cadre d’autorisation OAuth 2.0 est un protocole qui permet à un utilisateur d’accorder à un site Web ou à une application tiers l’accès à ses ressources protégées, sans nécessairement divulguer ses informations d’identification à long terme ni même son identité. introduit une couche d’autorisation et sépare le rôle du client de celui du . Dans OAuth, le client demande l’accès aux ressources contrôlées par le propriétaire de la ressource et hébergées par le et se voit attribuer un ensemble d’informations d’identification différent de celui du propriétaire de la ressource. Plutôt que d’utiliser les informations d’identification du propriétaire de la ressource pour accéder aux ressources protégées, le client obtient un — une chaîne indiquant une portée spécifique, une durée de vie et d’autres attributs d’accès. Les jetons d’accès sont émis aux clients tiers par un avec l’approbation du propriétaire de la ressource. Ensuite, le client utilise le jeton d’accès pour accéder aux ressources protégées hébergées par le serveur de ressources. Auth0 génère des jetons d’accès pour les scénarios d’autorisation d’API, au format JSON Web Token (JWT). Les autorisations représentées par le jeton d’accès, en termes OAuth, sont appelées scopes. Lorsqu’une application s’authentifie auprès d’Auth0, elle spécifie les scopes souhaités. Si ces scopes sont autorisés par l’utilisateur, le jeton d’accès représentera ces scopes autorisés.

Rôles

Un flux OAuth 2.0 comprend les rôles suivants :
  • 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 voulez accéder.
  • Client : 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 nécessaire. Dans ce cas-ci, il s’agit d’Auth0.

Types d’octroi

OAuth 2.0 définit quatre flux permettant d’obtenir un jeton d’accès. Ces flux sont appelés des types d’octroi. Le choix de celui qui convient à votre situation dépend surtout du type d’application. La spécification prévoit aussi un mécanisme d’extensibilité permettant de définir des types d’octroi supplémentaires. Pour en savoir plus sur le fonctionnement de chaque type d’octroi et sur les situations où l’utiliser, consultez les flux d’authentification et d’autorisation.

Endpoints

OAuth 2.0 utilise deux endpoints : /authorize et /oauth/token.

Point de terminaison d’autorisation

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 voulez vous connecter à un service avec 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 demandera d’autoriser le service à accéder à certaines de vos données (ressources protégées), par exemple votre adresse courriel et votre liste de contacts. Les paramètres de requête du point de terminaison /authorize sont les suivants : Vous pouvez configurer des paramètres de requête personnalisés lorsque votre application effectue la requête initiale vers le point de terminaison /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éfixés par ext- apparaissent automatiquement dans le contexte du modèle de page. Ce point de terminaison est utilisé par les types de grant Authorization Code et Implicit. Le serveur d’autorisation doit savoir quel type de grant l’application veut utiliser, puisque cela influe sur le type d’identifiant qu’il émettra :
  • Pour le grant Authorization Code, il émettra un code d’autorisation (qui pourra ensuite être échangé contre un jeton d’accès au point de terminaison /oauth/token).
  • Pour le grant Implicit, il émettra un jeton d’accès, qui est une chaîne opaque (ou un dans une mise en œuvre Auth0) qui indique quelle application a été autorisée à quelles permissions (scopes), et par qui.
Pour indiquer au serveur d’autorisation quel type de grant utiliser, le paramètre de requête response_type est utilisé comme suit :
  • Pour le grant Authorization Code, utilisez response_type=code pour inclure le code d’autorisation.
  • Pour le grant Implicit, utilisez response_type=token pour inclure un jeton d’accès. Une autre possibilité est d’utiliser response_type=id_token token pour inclure à la fois un jeton d’accès et un .
Un ID token est un JWT qui contient des renseignements sur l’utilisateur connecté. Il a été introduit par Connect (OIDC). La spécification OAuth 2.0 Multiple Response Type Encoding Practices a ajouté un paramètre qui précise comment le résultat de la requête d’autorisation est mis en forme. Ce paramètre s’appelle response_mode. Il est facultatif et peut prendre les valeurs suivantes :

Point de terminaison de jeton

Le point de terminaison /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, car 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 du point de terminaison d’autorisation contre un jeton d’accès.
  • Dans le flux des informations d’identification du client et l’échange d’octroi des informations d’identification par mot de passe du propriétaire de la ressource, l’application s’authentifie au moyen d’un ensemble d’informations d’identification, puis obtient un jeton d’accès.

Paramètres d’état

Les protocoles d’autorisation fournissent un paramètre state qui vous permet de rétablir l’état antérieur de votre application. Le paramètre state conserve l’objet d’état défini par le client dans la requête d’autorisation et le rend accessible au client dans la réponse. La principale raison d’utiliser le paramètre state est de réduire les risques d’attaques CSRF. Consultez Utiliser les paramètres d’état d’OAuth 2.0 pour en savoir plus.

En savoir plus