Exemple de flux d'autorisation à deux acteurs de type d'octroi d'échange de jetons

Utilisez les exemples suivants pour créer vos demandes de type d'octroi Token Exchange.

Chacun de ces exemples nécessite une demande signée. Pour savoir comment créer des demandes d'en-tête de signature, reportez-vous à Signatures de demande.

Exemple de demande : échange d'une clé d'API pour un jeton d'accès de domaine d'identité

Utilisez la clé d'API d'un utilisateur pour effectuer une demande signée afin d'obtenir un jeton d'accès pour l'utilisateur propriétaire de cette clé d'API.
   curl  -X POST -sS https://<domainURL>/oauth2/v1/token -i 
   -H 'date: Mon, 20 Nov 2023 00:32:02 GMT' 
   -H 'x-content-sha256: 5AfZSV0021K+QUDAdfV7g4wwqBsF2rgVOQWRMIrTa9Q=' 
   -H 'content-type: application/x-www-form-urlencoded;charset=utf-8' 
   -H 'content-length: 185' 
   -H 'Authorization: Signature version="1",keyId="<key-id>",algorithm="rsa-sha256",headers="(request-target) date host x-content-sha256 content-type content-length",signature="<signature>"' 
   -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange&scope=http://www.ocisampleservice.com/resume&requested_token_type=urn:ietf:params:oauth:token-type:access_token'

Exemple de demande : échange d'un principal utilisateur pour un jeton d'accès de domaine d'identité

Utilisez un principal d'utilisateur pour effectuer une demande signée afin d'obtenir un jeton d'accès pour cet utilisateur.
   curl  -X POST -sS https://<domainURL>/oauth2/v1/token -i 
   -H 'date: Mon, 20 Nov 2023 23:51:18 GMT' 
   -H 'x-content-sha256: n0NyZzoYSrKNC6r6f3mrNxYCtZOuG1zK2TY/r+N676Y=' 
   -H 'content-type: application/x-www-form-urlencoded;charset=utf-8' 
   -H 'content-length: 163' 
   -H 'Authorization: Signature version="1",keyId="<key-id>",algorithm="rsa-sha256",headers="(request-target) date host x-content-sha256 content-type content-length",signature="<signature>"' 
   -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange&scope=http://www.ocisampleservice.com/resume&requested_token_type=urn:ietf:params:oauth:token-type:access_token'
Les portées supplémentaires suivantes peuvent également être utilisées :
  • offline_access
  • urn:opc:resource:consumer:tokengenerator:appid::<appId>
  • urn:opc:resource:consumer:<scopeExtension>::<scopeQualifier>
Voici un exemple de demande utilisant la portée offline_access.
   curl  -X POST -sS https://<domainURL>/oauth2/v1/token -i 
   -H 'date: Mon, 20 Nov 2023 18:58:49 GMT' 
   -H 'x-content-sha256: 7zRa1qI4iIQouzn2TCTisZKi1CSoXRDe1pUJ58IFyVk=' 
   -H 'content-type: application/x-www-form-urlencoded;charset=utf-8' 
   -H 'content-length: 284' 
   -H 'Authorization: Signature version="1",keyId="<key-id>",algorithm="rsa-sha256",headers="(request-target) date host x-content-sha256 content-type content-length",signature="<signature>"' 
   -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange&client_id=<client-id>&scope=http://www.docservice.com/report offline_access&isCLI=true&requested_token_type=urn:ietf:params:oauth:token-type:access_token???
Lorsque cette portée est incluse, un jeton d'accès et un jeton d'actualisation sont générés. Le format du jeton d'actualisation est répertorié dans l'exemple de réponse ci-dessous.
{
    "access_token": "<access-token>",
    "token_type": "Bearer",
    "expires_in": 3600
    "refresh_token": "<refresh token>"
}

Exemple de demande : échange d'un principal d'instance (IPST) pour un jeton d'accès de domaine d'identité

Utilisez un principal d'instance pour effectuer une demande signée afin d'obtenir un jeton d'accès pour cette instance.
   curl  -X POST -sS https://<domainURL>/oauth2/v1/token -i 
   -H 'date: Mon, 20 Nov 2023 12:07:10 GMT' 
   -H 'x-content-sha256: t7NyZzoWSrKNC6r6f3mrNxYCtZOuG1zK2TY/r+N676Y=' 
   -H 'content-type: application/x-www-form-urlencoded;charset=utf-8' 
   -H 'content-length: 170' 
   -H 'Authorization: Signature version="1",keyId="<key-id>",algorithm="rsa-sha256",headers="(request-target) date host x-content-sha256 content-type content-length",signature="<signature>"' 
   -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange&scope=http://www.ocisampleservice.com/resume&requested_token_type=urn:ietf:params:oauth:token-type:access_token'

Exemple de demande : échange d'un principal de ressource (RPST) pour un jeton d'accès de domaine d'identité

Utilisez un principal de ressource pour effectuer une demande signée afin d'obtenir un jeton d'accès pour cette ressource.
   curl  -X POST -sS https://<domainURL>/oauth2/v1/token -i 
   -H 'date: Mon, 20 Nov 2023 01:17:33 GMT' 
   -H 'x-content-sha256: t7NyZzoWSrKNC6r6f3mrNxYCtZOuG1zK2TY/r+N676Y=' 
   -H 'content-type: application/x-www-form-urlencoded;charset=utf-8' 
   -H 'content-length: 197' 
   -H 'Authorization: Signature version="1",keyId="<key-id>",algorithm="rsa-sha256",headers="(request-target) date host x-content-sha256 content-type content-length",signature="<signature>"' 
   -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange&scope=http://www.ocisampleservice.com/resume&requested_token_type=urn:ietf:params:oauth:token-type:access_token'

Exemple de réponse

L'exemple suivant montre le contenu du corps de réponse au format JSON lorsque vous utilisez le type d'octroi Token Exchange pour obtenir un jeton d'accès pour toutes les demandes de flux à 2 acteurs.
{
    "access_token": "<access-token>",
    "token_type": "Bearer",
    "expires_in": 3600
}