Obtención de un token de delegación
Función
Esta API se utiliza para obtener un token de delegación.
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 delegación. El token de delegación 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 Delegación del acceso de recursos a otra cuenta.
Un token es una credencial de acceso emitida a un usuario para llevar su identidad y permisos. Al invocar a las API de IAM u otros servicios en la nube, puede usar esta API para obtener un token de autenticación.
Se puede invocar a la API utilizando tanto el punto de conexión global como los puntos de conexión específicos de la región. Para los puntos de conexión de IAM, consulte Regiones y puntos de conexión.
- El período de validez de un token es de 24 horas. Almacenar en caché el token para evitar invocaciones 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 fallas en las invocaciones a la API.
URI
POST /v3/auth/tokens
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
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
Content-Type |
Sí |
String |
Rellene application/json;charset=utf8 en este campo. |
X-Auth-Token |
Sí |
String |
Token con permisos de operador de agente de un usuario de IAM creado por la parte delegada B. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
Sí |
Object |
Información de autenticación. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
Sí |
Object |
Parámetros de autenticación. |
|
Sí |
Object |
Ámbito de uso del token. El valor puede ser project o domain.
NOTA:
|
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
methods |
Sí |
Array of strings |
Método para obtener el token. Establezca este parámetro en assume_role. |
Sí |
Object |
Detalles sobre la cuenta de delegación y la delegación. |
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 delegación. |
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 |
Sí |
String |
Nombre de la delegación creada por la parte delegada A. Para obtener detalles sobre cómo obtener el nombre de la delegación, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y delegación. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
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 del sistema. Puede especificar el id o name. Se recomienda domain_id. |
|
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 del sistema. Puede especificar el id o name. |
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 delegación. 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 delegación. Puede especificar el id o name. |
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 delegación. 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 delegación. Puede especificar el id o name. |
Solicitud de ejemplo
- Solicitud de uso de un token de usuario con permisos de Agent Operator 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 Agent Operator 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 delegación 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
Parámetro |
Tipo |
Descripción |
---|---|---|
X-Subject-Token |
String |
Token firmado. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Object |
Información de 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.
NOTA:
El valor es una hora UTC en el formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por ejemplo, 2023-06-28T08:56:33.710000Z. Para obtener más información sobre los formatos de fecha y hora, consulte ISO-8601. |
issued_at |
String |
Hora en que se emitió el token.
NOTA:
El valor es una hora UTC en el formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por ejemplo, 2023-06-28T08:56:33.710000Z. Para obtener más información sobre los formatos de fecha y hora, consulte ISO-8601. |
Object |
Información sobre el partido delegado B. |
|
Array of objects |
Información del catálogo. |
|
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. |
|
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. |
|
Array of objects |
Información de permisos del token. |
|
Object |
Información sobre la delegación creada por la parte delegada A. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Object |
Información sobre un usuario de IAM de la parte delegada B. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre de usuario de IAM. |
id |
String |
ID de usuario de IAM. |
Object |
Información de cuenta de la parte delegada B. |
|
password_expires_at |
String |
Tiempo de caducidad de la contraseña del usuario de IAM. Si no se especifica este parámetro, la contraseña nunca caducará.
NOTA:
El valor es una hora UTC en el formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por ejemplo, 2023-06-28T08:56:33.710000Z. Para obtener más información sobre los formatos de fecha y hora, consulte ISO-8601. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre de la cuenta de la parte delegada B. |
id |
String |
ID de cuenta de la parte delegada B. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Array of objects |
Información del punto de conexión. |
|
id |
String |
ID de servicio. |
name |
String |
Nombre del servicio. |
type |
String |
Tipo del servicio al que pertenece la API. |
Parámetro |
Tipo |
Descripción |
---|---|---|
id |
String |
ID de punto de conexión. |
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 punto de conexión. |
region_id |
String |
ID de región. |
url |
String |
URL de punto de conexión. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre de la cuenta de la parte delegada A. |
id |
String |
ID de cuenta de la parte delegada A. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre del proyecto de la parte delegada A. |
id |
String |
ID del proyecto de la parte delegada A. |
Object |
Información de cuenta de la parte delegada A. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre de la cuenta de la parte delegada A. |
id |
String |
ID de cuenta de la parte delegada A. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre del permiso. |
id |
String |
ID de permiso. El valor predeterminado es 0, que no corresponde a ningún permiso. |
Ejemplo de respuesta
Código de estado: 201
La solicitud se ha realizado correctamente.
Ejemplo 1: Respuesta a la solicitud de uso de un token de usuario con permisos de operador de agente de usuario de IAM 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 la delegación IAMAgency
Ejemplo 2: Respuesta a la solicitud de uso de un token de usuario con permisos de operador de agente de usuario de IAM 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 la delegación IAMAgency sin mostrar información de catálogo en la respuesta
- Ejemplo 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": "" } } } }
- Ejemplo 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": "" } } } }
Código de estado: 400
Parámetros no válidos.
{ "error": { "code": 400, "message": "The request body is invalid", "title": "Bad Request" } }
Código de estado: 401
Error de autenticación.
{ "error": { "code": 401, "message": "The X-Auth-Token is invalid!", "title": "Unauthorized" } }
Código de estado: 403
Acceso denegado.
- El token de usuario especificado en X-Auth-Token para el usuario B de la parte delegada B no tiene el permiso de operador de agente. Por favor, solicite el permiso requerido.
{ "error": { "code": 403, "message": "You have no right to do this action", "title": "Forbidden" } }
Códigos de estado
Código de estado |
Descripción |
---|---|
201 |
La solicitud se ha realizado correctamente. |
400 |
Parámetros no válidos. |
401 |
Error de autenticación. |
403 |
Acceso denegado. (La posible causa de este error es que la parte delegada no tiene el permiso de operador de agente.) |
404 |
No se puede encontrar el recurso solicitado. |
500 |
Error de servidor interno. |
503 |
Servicio no disponible. |
Códigos de error
Ninguno