Ejemplo de flujo de autorización de dos partes de tipo de otorgamiento de intercambio de token

Utilice los siguientes ejemplos para crear las solicitudes de tipo de permiso Token Exchange.

Cada uno de estos ejemplos requiere una solicitud firmada. Para obtener más información sobre cómo crear solicitudes de cabecera de firma, consulte Firmas de solicitud.

Ejemplo de solicitud: intercambio de una clave de API para un token de acceso de dominio de identidad

Utilice la clave de API de un usuario para realizar una solicitud firmada para obtener un token de acceso para el usuario propietario de esa clave de 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'

Ejemplo de solicitud: intercambio de un principal de usuario para un token de acceso de dominio de identidad

Utilice un principal de usuario para realizar una solicitud firmada para obtener un token de acceso para ese usuario.
   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'
También se pueden utilizar los siguientes ámbitos adicionales:
  • offline_access
  • urn:opc:resource:consumer:tokengenerator:appid::<appId>
  • urn:opc:resource:consumer:<scopeExtension>::<scopeQualifier>
A continuación, se muestra un ejemplo de solicitud que utiliza el ámbito 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???
Cuando se incluye este ámbito, se generan un token de acceso y un token de refrescamiento. El formato del token de refrescamiento se muestra en el siguiente ejemplo de respuesta.
{
    "access_token": "<access-token>",
    "token_type": "Bearer",
    "expires_in": 3600
    "refresh_token": "<refresh token>"
}

Ejemplo de solicitud: intercambio de un principal de instancia (IPST) para un token de acceso de dominio de identidad

Utilice un principal de instancia para realizar una solicitud firmada para obtener un token de acceso para esa instancia.
   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'

Ejemplo de solicitud: intercambio de entidad de recurso (RPST) para un token de acceso de dominio de identidad

Utilice una entidad de recurso para realizar una solicitud firmada para obtener un token de acceso para ese recurso.
   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'

Ejemplo de respuesta

En el siguiente ejemplo se muestra el contenido del cuerpo de respuesta en formato JSON cuando se utiliza el tipo de permiso Token Exchange para obtener un token de acceso para todas las solicitudes de flujo de 2 tramos.
{
    "access_token": "<access-token>",
    "token_type": "Bearer",
    "expires_in": 3600
}