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 de Agencia

Función

Esta API se utiliza para obtener un token de agencia.

Por ejemplo, después de establecer una relación de confianza entre A y B, A es la parte delegada y B es la parte delegada. Entonces B puede usar esta API para obtener un token de agencia. El token de agencia obtenido solo se puede usar para gestionar los recursos que la cuenta B está delegada para gestionar. Si la cuenta B necesita gestionar sus propios recursos, la cuenta B necesita obtener un token de usuario. Para obtener más información, consulte Delegar el acceso de recursos a otra cuenta.

Un token es una credencial de acceso emitida a un usuario para llevar su identidad y permisos. Al llamar a las API de IAM u otros servicios en la nube, puede usar esta API para obtener un token de autenticación.

Se puede llamar a la API utilizando tanto el punto final global como los puntos de conexión específicos de la región. Para los puntos finales de IAM, consulte Regions y puntos de conexión.

  • El período de validez de un token es de 24 horas. Almacenar en caché el token para evitar llamadas frecuentes a la API.
  • Asegúrese de que el token es válido mientras lo usa. El uso de un token que caducará pronto puede provocar fallos en las llamadas a la API.

URI

POST /v3/auth/tokens

Tabla 1 Parámetros de Query

Parámetro

Obligatorio

Tipo

Descripción

nocatalog

No

String

Si se establece este parámetro, no se mostrará ninguna información del catálogo en la respuesta. Cualquier conjunto de cadenas de caracteres para este parámetro indica que no se mostrará ninguna información del catálogo.

Parámetros de solicitud

Tabla 2 Parámetros en el encabezado de solicitud

Parámetro

Obligatorio

Tipo

Descripción

Content-Type

String

Rellene application/json;charset=utf8 en este campo.

X-Auth-Token

String

Token con permisos de operador de agente de un usuario de IAM creado por la parte delegada B.

Tabla 3 Parámetros en el cuerpo de la solicitud

Parámetro

Obligatorio

Tipo

Descripción

auth

Object

Información de autenticación.

Tabla 4 auth

Parámetro

Obligatorio

Tipo

Descripción

identity

Object

Parámetros de autenticación.

scope

Object

Ámbito de uso del token. El valor puede ser project o domain.

NOTA:
  • Si el ámbito se establece en dominio, el token se aplica a los servicios globales. Si el ámbito se establece en proyecto, el token se aplica a los servicios de nivel de proyecto.
  • Si el ámbito se establece en proyecto y dominio, se utiliza el proyecto y se obtiene un token para los servicios a nivel de proyecto.
  • Si el alcance se deja en blanco, obtendrá un token para los servicios globales. Se recomienda especificar este parámetro.
Tabla 5 auth.identity

Parámetro

Obligatorio

Tipo

Descripción

methods

Array of strings

Método para obtener el token. Establezca este parámetro en assume_role.

assume_role

Object

Detalles sobre la cuenta de delegación y la agencia.

Tabla 6 auth.identity.assume_role

Parámetro

Obligatorio

Tipo

Descripción

domain_id

No

String

ID de cuenta de la parte delegada A. Se debe establecer el domain_id o domain_name. Se recomienda especificar domain_id.

Para obtener más información sobre cómo obtener el ID de cuenta, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia.

domain_name

No

String

Nombre de la cuenta de la parte delegada A. Se debe establecer domain_id o domain_name. Se recomienda especificar domain_id.

Puede ver el nombre de la cuenta de la parte delegada A en la lista de agencias en la consola de IAM.

agency_name

String

Nombre de la agencia creada por la parte delegada A. Para obtener detalles sobre cómo obtener el nombre de la agencia, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia.

Tabla 7 auth.scope

Parámetro

Obligatorio

Tipo

Descripción

domain

No

Object

Si este campo se establece en domain, el token se puede utilizar para acceder a servicios globales, como OBS. Los servicios globales no están sujetos a ningún proyecto o región. Para obtener más información sobre el alcance del servicio, consulte Permisos de sistema. Puede especificar el id o name. Se recomienda domain_id.

project

No

Object

Si este campo se establece como project, el token se puede usar para acceder solo a servicios en proyectos específicos, como ECS. Para obtener más información sobre el alcance del servicio, consulte Permisos de sistema. Puede especificar el id o name.

Tabla 8 auth.scope.domain

Parámetro

Obligatorio

Tipo

Descripción

id

No

String

ID de cuenta de la parte delegada A. Para obtener más información sobre cómo obtener el ID de cuenta, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia. Puede especificar el id o name.

name

No

String

Nombre de la cuenta de la parte delegada A. Para obtener más información sobre cómo obtener el ID de cuenta, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia. Puede especificar el id o name.

Tabla 9 auth.scope.project

Parámetro

Obligatorio

Tipo

Descripción

id

No

String

ID del proyecto de la parte delegada A. Para obtener más información sobre cómo obtener el ID del proyecto, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia. Puede especificar el id o name.

name

No

String

Nombre del proyecto de la parte delegada A. Para obtener más información sobre cómo obtener el nombre del proyecto, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y agencia. Puede especificar el id o name.

Ejemplo de solicitud

  • Solicitud de uso de un token de usuario con permisos de Agente Operador del usuario IAMUserB de la parte delegada B (nombre de cuenta: IAMDomainB) para obtener otro token para gestionar los recursos de la parte delegada A (nombre de cuenta: IAMDomainA) en el proyecto ap-southeast-1 a través de IAMAgency, sin mostrar la información del catálogo en la respuesta
    POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true
    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "assume_role": {
                    "domain_name": "IAMDomainA",                // Name of the account to which the delegating party IAM user A belongs
                    "agency_name": "IAMAgency"                  // Name of the agency created by IAM user A
                }
            },
            "scope": {
                "project": {
                    "name": "ap-southeast-1"                         //Project name
                }
            }
        }
    }
  • Solicitud de uso de un token de usuario con permisos de Agente Operador del usuario IAMUserB de la parte delegada B (nombre de cuenta: IAMDomainB) para obtener otro token para gestionar todos los recursos de la parte delegada A (nombre de cuenta: IAMDomainA) a través de agencia IAMAgency
    POST https://iam.myhuaweicloud.com/v3/auth/tokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "assume_role": {
                    "domain_name": "IAMDomainA",                // Name of the account to which the delegating party IAM user A belongs
                    "agency_name": "IAMAgency"                  // Name of the agency created by IAM user A
                }
            },
            "scope": {
                "domain": {
                    "name": "IAMDomainA"                        // Name of the account to which the delegating party IAM user A belongs
                }
            }
        }
    }

Parámetros de respuesta

Tabla 10 Parámetros en el encabezado de respuesta

Parámetro

Tipo

Descripción

X-Subject-Token

String

Signo firmado.

Tabla 11 Parámetros en el cuerpo de respuesta

Parámetro

Tipo

Descripción

token

Object

Información de token.

Tabla 12 token

Parámetro

Tipo

Descripción

methods

Array of strings

Método para obtener el token.

expires_at

String

Hora en que caducará el token.

issued_at

String

Hora en que se emitió el token.

assumed_by

Object

Información sobre el partido delegado B.

catalog

Array of objects

Información del catálogo.

domain

Object

Información de cuenta de la parte delegada A. Este parámetro se devuelve solo cuando el parámetro de scope en el cuerpo de la solicitud se ha establecido en domain.

project

Object

Información del proyecto de la parte delegada A. Este parámetro se devuelve solo cuando el parámetro de scope en el cuerpo de la solicitud se ha establecido en project.

roles

Array of objects

Información de permisos del token.

user

Object

Información sobre la agencia creada por la parte delegada A.

Tabla 13 token.assumed_by

Parámetro

Tipo

Descripción

user

Object

Información sobre un usuario de IAM de la parte delegada B.

Tabla 14 token.assumed_by.user

Parameter

Type

Description

name

String

IAM user name.

id

String

IAM user ID.

domain

Object

Account information of delegated party B.

password_expires_at

String

UTC time when the password of the IAM user will expire. If this parameter is empty, it indicates that the password has unlimited validity.

Tabla 15 token.assumed_by.user.domain

Parameter

Type

Description

name

String

Account name of delegated party B.

id

String

Account ID of delegated party B.

Tabla 16 token.catalog

Parameter

Type

Description

endpoints

Array of objects

Endpoint information.

id

String

Service ID.

name

String

Service name.

type

String

Type of the service to which the API belongs.

Tabla 17 token.catalog.endpoints

Parameter

Type

Description

id

String

Endpoint ID.

interface

String

Visibility of the API. public indicates that the API is available for public access.

region

String

Region to which the endpoint belongs.

region_id

String

Region ID.

url

String

Endpoint URL.

Tabla 18 token.domain

Parameter

Type

Description

name

String

Account name of delegating party A.

id

String

Account ID of delegating party A.

Tabla 19 token.project

Parameter

Type

Description

name

String

Project name of delegating party A.

id

String

Project ID of delegating party A.

domain

Object

Account information of delegating party A.

Tabla 20 token.project.domain

Parameter

Type

Description

name

String

Account name of delegating party A.

id

String

Account ID of delegating party A.

Tabla 21 token.roles

Parameter

Type

Description

name

String

Permission name.

id

String

Permission ID. The default value is 0, which does not correspond to any permission.

Tabla 22 token.user

Parameter

Type

Description

name

String

Account name or agency name of delegating party A.

id

String

Agency ID.

domain

Object

Account information of delegating party A.

Tabla 23 token.user.domain

Parameter

Type

Description

id

String

Account ID of delegating party A.

name

String

Account name of delegating party A.

Example Response

Status code: 201

The request is successful.

Example 1: Response to the request for using a user token with Agent Operator permissions of IAM user IAMUserB of delegated party B (account name: IAMDomainB) to obtain another token to manage all resources of delegating party A (account name: IAMDomainA) through agency IAMAgency

Example 2: Response to the request for using a user token with Agent Operator permissions of IAM user IAMUserB of delegated party B (account name: IAMDomainB) to obtain another token to manage the resources of delegating party A (account name: IAMDomainA) in the ap-southeast-1 project through agency IAMAgency, without displaying catalog information in the response

  • Example 1
    Parameters in the response header
    X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
    Parameters in the response body
    {
        "token": {
            "expires_at": "2020-01-05T05:05:17.429000Z",
            "methods": [
                "assume_role"
            ],
            "catalog": [
                {
                    "endpoints": [
                        {
                            "id": "33e1cbdd86d34e89a63cf8ad16a5f49f",
                            "interface": "public",
                            "region": "*",
                            "region_id": "*",
                            "url": "https://iam.myhuaweicloud.com/v3.0"
                        }
                    ],
                    "id": "100a6a3477f1495286579b819d399e36",
                    "name": "iam",
                    "type": "iam"
                }
            ],
            "domain": {
                "id": "d78cbac186b744899480f25bd022f468",
                "name": "IAMDomainA"
            },
            "roles": [
                {
                    "id": "0",
                    "name": "op_gated_eip_ipv6"
                },
                {
                    "id": "0",
                    "name": "op_gated_rds_mcs"
                }
            ],
            "issued_at": "2020-01-04T05:05:17.429000Z",
            "user": {
                "domain": {
                    "id": "d78cbac186b744899480f25bd022f468",
                    "name": "IAMDomainA"
                },
                "id": "0760a9e2a60026664f1fc0031f9f205e",
                "name": "IAMDomainA/IAMAgency"
            },
            "assumed_by": {
                "user": {
                    "domain": {
                        "id": "a2cd82a33fb043dc9304bf72a0f38f00",
                        "name": "IAMDomainB"
                    },
                    "id": "0760a0bdee8026601f44c006524b17a9",
                    "name": "IAMUserB",
                    "password_expires_at": ""
                }
            }
        }
    }
  • Example 2
    Parameters in the response header
    X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
    Parameters in the response body
    {
        "token": {
            "expires_at": "2020-01-05T06:49:28.094000Z",
            "methods": [
                "assume_role"
            ],
            "catalog": [],
            "roles": [
                {
                    "id": "0",
                    "name": "op_gated_eip_ipv6"
                },
                {
                    "id": "0",
                    "name": "op_gated_rds_mcs"
                }
            ],
            "project": {
                "domain": {
                    "id": "d78cbac186b744899480f25bd022f468",
                    "name": "IAMDomainA"
                },
                "id": "aa2d97d7e62c4b7da3ffdfc11551f878",
                "name": "ap-southeast-1"
            },
            "issued_at": "2020-01-04T06:49:28.094000Z",
            "user": {
                "domain": {
                    "id": "d78cbac186b744899480f25bd022f468",
                    "name": "IAMDomainA"
                },
                "id": "0760a9e2a60026664f1fc0031f9f205e",
                "name": "IAMDomainA/IAMAgency"
            },
            "assumed_by": {
                "user": {
                    "domain": {
                        "id": "a2cd82a33fb043dc9304bf72a0f38f00",
                        "name": "IAMDomainB"
                    },
                    "id": "0760a0bdee8026601f44c006524b17a9",
                    "name": "IAMUserB",
                    "password_expires_at": ""
                }
            }
        }
    }

Status code: 400

Invalid parameters.

{
    "error": {
        "code": 400,
        "message": "The request body is invalid",
        "title": "Bad Request"
    }
}

Status code: 401

Authentication failed.

{
    "error": {
        "code": 401,
        "message": "The X-Auth-Token is invalid!",
        "title": "Unauthorized"
    }
}

Status code: 403

Access denied.

  • The user token specified in X-Auth-Token for user B of delegated party B does not have the Agent Operator permission. Please apply for the required permission.
{
    "error": {
        "code": 403,
        "message": "You have no right to do this action",
        "title": "Forbidden"
    }
}

Status Codes

Status Code

Description

201

The request is successful.

400

Invalid parameters.

401

Authentication failed.

403

Access denied. (The possible cause of this error is that the delegated party does not have the Agent Operator permission.)

404

The requested resource cannot be found.

500

Internal server error.

503

Service unavailable.

Error Codes

None