Type d'octroi de code d'autorisation
Utilisez ce type d'octroi pour obtenir un code à l'aide d'un serveur d'autorisation faisant office d'intermédiaire entre l'application client et le propriétaire de la ressource à l'aide de domaines d'identité.
Le diagramme suivant présente le flux Authorization Code Grant Type (Type d'octroi de code d'autorisation).
![Diagramme illustrant le flux de type d'octroi de code d'autorisation.](../../Resources/Images/daig1_authz_code_granttype.png)
Un utilisateur clique sur un lien dans une application client de serveur Web pour demander l'accès à des ressources protégées.
L'application client redirige le navigateur vers l'adresse d'autorisation
oauth2/v1/authorize
avec une demande de code d'autorisation.Le serveur d'autorisation renvoie un code d'autorisation à l'application client via une redirection de navigateur une fois que le propriétaire de la ressource a donné son consentement.
L'application client échange ensuite le code d'autorisation avec un jeton d'accès et souvent un jeton d'actualisation.
Le serveur d'autorisation renvoie le jeton d'accès à l'application client.
- L'application client utilise le jeton d'accès dans un appel d'API pour obtenir des données protégées.Remarque
Les informations d'identification du propriétaire de la ressource ne sont jamais visibles par le client.
Fonction | Disponible |
---|---|
Nécessite une authentification client | Non |
Le client doit connaître les informations d'identification utilisateur | Non |
Interaction de l'utilisateur final basée sur un navigateur | Oui |
Peut utiliser un fournisseur d'identités externe pour l'authentification | Oui |
Jeton d'actualisation autorisé | Oui |
Le jeton d'accès se trouve dans le contexte de l'utilisateur final | Oui |
Reportez-vous à un exemple de exemple de flux d'autorisation de type d'octroi de code d'autorisation.
Exemple de flux d'autorisation de type d'octroi de code d'autorisation
Cet exemple de flux d'autorisation vous guide tout au long d'une demande de connexion OpenID Connect à l'aide d'un code d'autorisation.
Ce flux est un flux OAuth à trois acteurs, qui fait référence à des scénarios dans lesquels l'application appelle les API de domaine d'identité au nom des utilisateurs finaux et dans lesquels le consentement de l'utilisateur est parfois requis. Ce flux montre comment configurer l'accès avec connexion unique fédéré entre un domaine d'identité et une application personnalisée à l'aide de OAuth 2.0 et d'OpenID Connect.
Lorsque vous créez une application à l'aide du type d'octroi Code d'autorisation dans la console du domaine d'identité, procédez comme suit :
-
Indiquez Application sécurisée comme type d'application.
-
Sélectionnez Code d'autorisation comme type d'octroi.
-
Indiquez l'URI de réacheminement où les réponses aux demandes d'authentification sont envoyées.
-
Vous pouvez éventuellement sélectionner le type d'octroi Jeton d'actualisation pour renvoyer un jeton d'actualisation avec le jeton d'accès.
Pour plus d'informations sur le type d'octroi Code d'autorisation et un diagramme de flux d'autorisation, reportez-vous à Type d'octroi Code d'autorisation.
Flux d'autorisation
-
Un utilisateur clique sur un lien dans l'application client du serveur Web (Customer Quotes), demandant l'accès à des ressources protégées.
-
L'application Customer Quotes redirige le navigateur vers l'adresse d'autorisation de domaine d'identité
(oauth2/v1/authorize)
avec une demande de code d'autorisation.L'URL de demande contient des paramètres de requête qui indiquent le type d'accès demandé.Remarque
Une valeur nonce est une chaîne aléatoire cryptographiquement forte que vous utilisez pour empêcher la réutilisation des réponses interceptées.Exemple de demande : client confidentiel/de confiance
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Exemple de demande : client confidentiel/de confiance incluant un jeton d'actualisation dans la demande
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client-id&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid%20<Resource Server Scope>%20offline_access&nonce=<nonce-value>&state=1234
Exemple de demande : Client public
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=id_token&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234
Exemple de demande effectuée avec PKCE
GET https://<domainURL>/oauth2/v1/authorize?client_id=<client_id>&response_type=code&redirect_uri=<client-redirect-uri>&scope=openid&nonce=<nonce-value>&state=1234&code_challenge=<code-challenge>&code_challenge_method=<plain|S256>'
-
Le domaine d'identité reçoit la demande et identifie que l'application Customer Quotes (identifiée par son
client_id
) demande un code d'autorisation pour obtenir plus d'informations sur le propriétaire de la ressource (portéeopenid).
) -
Si l'utilisateur n'est pas déjà connecté, IAM demande à l'utilisateur de s'authentifier. IAM vérifie les informations d'identification de l'utilisateur.
-
Si la connexion réussit, IAM redirige le navigateur vers l'application Customer Quotes avec un code d'autorisation.Remarque
Si l'utilisateur ne s'authentifie pas, une erreur est renvoyée plutôt que le code d'autorisation. -
L'application Customer Quotes extrait le code d'autorisation et demande à un domaine d'identité d'échanger le code d'autorisation contre un jeton d'accès.
Exemple de demande : client confidentiel/de confiance
curl -i -H 'Authorization: Basic <base64-clientid-secret>' -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>'
Exemple de demande : client public
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-code>&redirect_uri=<client-redirect-uri>&client_id=<client-id>'
Exemple de demande effectuée avec PKCE
curl -i -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' --request POST https://<domainURL>/oauth2/v1/token -d 'grant_type=authorization_code&code=<authz-cod>e&redirect_uri=<client-redirect-uri>&client_id=<client-id>&code_verifier=<code-verifier>'
-
IAM valide les données d'octroi et d'utilisateur associées au code (
client_id, client_secret
et le code d'autorisation). -
Un jeton d'accès et un jeton d'identité sont renvoyés. Le jeton d'accès contient des informations sur les portées que l'application Customer Quotes peut demander pour le compte de l'utilisateur. L'application peut utiliser ce jeton lors de la demande d'API pour le compte de l'utilisateur.
Le jeton d'identité est extrait uniquement lorsque vous demandez la portée
openid
. Ce jeton contient des informations d'identification sur l'utilisateur et est utilisé pour l'authentification fédérée. -
L'application Customer Quotes traite
id_token
, puis extrait les informations de l'utilisateur renvoyées à partir d'IAM. -
Devis client affiche la page d'accueil contenant des informations sur l'utilisateur.