Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2022-11-08 GMT+08:00

Obtención de un token con un token ID de OpenID Connect

Función

Esta API se utiliza para obtener un token de autenticación de identidad federada mediante un token de ID de conexión de OpenID.

Se puede llamar a la API utilizando tanto el endpoint global como los endpoints específicos de la región. Para los endpoints de IAM, consulte Regiones y endpoint.

URI

POST /v3.0/OS-AUTH/id-token/tokens

Parámetros de solicitud

Tabla 1 Parámetros en el encabezado de solicitud

Parámetro

Obligatorio

Tipo

Descripción

X-Idp-Id

String

ID de proveedor de identidad.

Tabla 2 Parámetro en el cuerpo de la solicitud

Parámetro

Obligatorio

Tipo

Descripción

auth

object

Detalles sobre el parámetro de solicitud auth.

Tabla 3 GetIdTokenAuthParams

Parámetro

Obligatorio

Tipo

Descripción

id_token

object

Detalles sobre un token de ID.

scope

No

object

Ámbito de permiso del token que desea obtener. Se obtendrá un token sin alcance si no se especifica este parámetro.

Tabla 4 GetIdTokenIdTokenBody

Parámetro

Obligatorio

Tipo

Descripción

id

String

ID token, que es construido por el IdP de la empresa para llevar la información de identidad de los usuarios federados. Para obtener más información sobre cómo obtener un token de ID, consulte la documentación de IdP empresarial.

Tabla 5 GetIdTokenIdScopeBody

Parámetro

Obligatorio

Tipo

Descripción

domain

No

object

Detalles del alcance del dominio. Especifique un dominio o un proyecto.

project

No

object

Detalles del alcance del proyecto. Especifique un proyecto o un dominio.

Tabla 6 GetIdTokenScopeDomainOrProjectBody

Parámetro

Obligatorio

Tipo

Descripción

id

No

String

ID de dominio o ID de proyecto. Especifique este parámetro o el parámetro name.

name

No

String

Nombre de dominio o nombre de proyecto. Especifique este parámetro o el parámetro id.

Parámetros de respuesta

Código de estado: 201

Tabla 7 Parámetros en el encabezado de respuesta

Parámetro

Tipo

Descripción

X-Subject-Token

String

Signo firmado.

Tabla 8 Parámetros en el cuerpo de respuesta

Parámetro

Tipo

Descripción

token

object

Detalles sobre el token obtenido.

Tabla 9 ScopedTokenInfo

Parámetro

Tipo

Descripción

expires_at

String

Hora en que caducará el token.

methods

Array of strings

Método para obtener el token. Para los usuarios federados, el valor predeterminado de este parámetro es mapped.

issued_at

String

Hora en que se emitió el token.

user

object

Detalles del usuario.

domain

object

Detalles de la cuenta.

project

object

Detalles del proyecto.

roles

Array of objects

Detalles del rol o de la política.

catalog

Array of objects

Detalles del catálogo.

Tabla 10 FederationUserBody

Parámetro

Tipo

Descripción

OS-FEDERATION

object

Detalles de usuario federados.

domain

object

Detalles de la cuenta.

id

String

ID de usuario.

name

String

Nombre de usuario.

Tabla 11 OSFederationInfo

Parámetro

Tipo

Descripción

identity_provider

object

Detalles del proveedor de identidad.

protocol

object

Detalles del protocolo.

groups

Array of objects

Detalles del grupo de usuarios.

Tabla 12 IdpIdInfo

Parámetro

Tipo

Descripción

id

String

ID de proveedor de identidad.

Tabla 13 ProtocolIdInfo

Parámetro

Tipo

Descripción

id

String

ID del protocolo.

Tabla 14 token.user.OS-FEDERATION.groups

Parámetro

Tipo

Descripción

id

String

ID de grupo de usuarios.

name

String

Nombre del grupo de usuarios.

Tabla 15 token.user.domain

Parámetro

Tipo

Descripción

id

String

ID de cuenta.

name

String

Nombre de cuenta.

Tabla 16 DomainInfo

Parámetro

Tipo

Descripción

id

String

ID de cuenta.

name

String

Nombre de cuenta.

Tabla 17 ProjectInfo

Parámetro

Tipo

Descripción

domain

object

Detalles de la cuenta.

id

String

ID del proyecto.

name

String

Nombre del proyecto.

Tabla 18 token.project.domain

Parámetro

Tipo

Descripción

id

String

ID de cuenta.

name

String

Nombre de cuenta.

Tabla 19 roles

Parámetro

Tipo

Descripción

id

String

ID de permiso.

name

String

Nombre del permiso.

Tabla 20 CatalogInfo

Parámetro

Tipo

Descripción

id

String

ID de endpoint

interface

String

Visibilidad de la API. public indica que la API está disponible para el acceso público.

region

String

Región a la que pertenece el endpoint.

region_id

String

ID de región.

url

String

URL de endpoint

Ejemplo de la solicitud

  • Solicitud de obtención de un token de ámbito para un proyecto específico
    POST /v3.0/OS-AUTH/id-token/tokens
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         }, 
         "scope" : { 
           "project" : { 
             "id" : "46419baef4324...", 
             "name" : "ap-southeast-1" 
           } 
         } 
       } 
     }
  • Solicitud de obtención de un token de ámbito para un dominio específico
    POST /v3.0/OS-AUTH/id-token/tokens
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         }, 
         "scope" : { 
           "domain" : { 
             "id" : "063bb260a480...", 
             "name" : "IAMDomain" 
           } 
         } 
       } 
     }
  • Solicitud de obtención de un token sin alcance
    POST /v3.0/OS-AUTH/id-token/tokens
     { 
       "auth" : { 
         "id_token" : { 
           "id" : "eyJhbGciOiJSU..." 
         } 
       } 
     }

Ejemplo de la respuesta

Código de estado: 201

El token se obtiene con éxito.

{ 
  "token" : { 
    "expires_at" : "2018-03-13T03:00:01.168000Z", 
    "methods" : [ "mapped" ], 
    "issued_at" : "2018-03-12T03:00:01.168000Z", 
    "user" : { 
      "OS-FEDERATION" : { 
        "identity_provider" : { 
          "id" : "idptest" 
        }, 
        "protocol" : { 
          "id" : "oidc" 
        }, 
        "groups" : [ { 
          "name" : "admin", 
          "id" : "45a8c8f..." 
        } ] 
      }, 
      "domain" : { 
        "id" : "063bb260a480...", 
        "name" : "IAMDomain" 
      }, 
      "name" : "FederationUser", 
      "id" : "suvmgvUZc4PaCOEc..." 
    } 
  } 
}

Código de estado: 400

Parámetros no válidos.

{ 
  "error_msg" : "Request body is invalid.", 
  "error_code" : "IAM.0011" 
}

Código de estado: 401

Error de autenticación.

{ 
  "error_msg" : "The request you have made requires authentication.", 
  "error_code" : "IAM.0001" 
}

Código de estado: 403

Acceso denegado.

{ 
  "error_msg" : "Policy doesn't allow %(actions)s to be performed.", 
  "error_code" : "IAM.0003" 
}

Código de estado: 404

No se encontraron el recurso solicitado.

{ 
  "error_msg" : "Could not find %(target)s: %(target_id)s.", 
  "error_code" : "IAM.0004" 
}

Código de estado: 500

Error interno del sistema.

{ 
  "error_msg" : "An unexpected error prevented the server from fulfilling your request.", 
  "error_code" : "IAM.0006" 
}

Códigos de estado

Código de estado

Descripción

201

El token se obtiene con éxito.

400

Parámetros no válidos.

401

Error de autenticación.

403

Acceso denegado.

404

No se encontraron el recurso solicitado.

500

Error interno del sistema.

Códigos de error

Para obtener más información, consulte Códigos de error.