Obtenção de um token de agência
Função
Esta API é usada para obter um token de agência.
Por exemplo, depois que uma relação de confiança é estabelecida entre A e B, A é a parte delegante e B é a parte delegada. Em seguida, B pode usar essa API para obter um token de agência. O token de agência obtido só pode ser usado para gerenciar os recursos que a conta B é delegada para gerenciar. Se a conta B precisa gerenciar seus próprios recursos, a conta B precisa obter um token de usuário. Para obter detalhes, consulte Delegação de acesso a recursos para outra conta.
Um token é uma credencial de acesso emitida para um usuário para suportar sua identidade e permissões. Ao chamar as APIs do IAM ou de outros serviços de nuvem, você pode usar essa API para obter um token para autenticação.
A API pode ser chamada usando o ponto de extremidade global e pontos de extremidade da região específica. Para pontos de extremidade do IAM, consulte Regiões e pontos de extremidade.

- O período de validade de um token é de 24 horas. Armazene em cache o token para evitar chamadas frequentes de API.
- Certifique-se de que o token seja válido enquanto você o estiver usando. Usar um token que expirará em breve pode causar falhas de chamada de API.
URI
POST /v3/auth/tokens
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
nocatalog | Não | String | Se este parâmetro for definido, nenhuma informação de catálogo será exibida na resposta. Qualquer cadeia de caracteres definida para esse parâmetro indica que nenhuma informação de catálogo será exibida. |
Parâmetros de solicitação
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
Content-Type | Sim | String | Preencha application/json;charset=utf8 nesse campo. |
X-Auth-Token | Sim | String | Token com permissões de Agent Operator de um usuário do IAM criado pela parte delegada B. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
Sim | Object | Informações de autenticação. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
Sim | Object | Parâmetros de autenticação. | |
Sim | Object | Escopo de uso do token. O valor pode ser project ou domain. NOTA:
|
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
methods | Sim | Array of strings | Método para obter o token. Defina esse parâmetro como assume_role. |
Sim | Object | Detalhes sobre a conta e a agência delegante. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
domain_id | Não | String | ID da conta da parte delegante A. domain_id ou domain_name deve ser definido. É aconselhável especificar domain_id. Para obter detalhes sobre como obter o ID da conta, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. |
domain_name | Não | String | Nome da conta da parte delegante A. domain_id ou domain_name deve ser definido. É aconselhável especificar domain_id. Você pode exibir o nome da conta da parte delegante A na lista de agências no console do IAM. |
agency_name | Sim | String | Nome da agência criada pela parte delegante A. Para obter detalhes sobre como obter o nome da agência, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
Não | Object | Se esse campo estiver definido como domain, o token poderá ser usado para acessar serviços globais, como o OBS. Os serviços globais não estão sujeitos a nenhum projeto ou região. Para obter detalhes sobre o escopo do serviço, consulte Permissões do sistema. Você pode especificar id ou name. domain_id é recomendado. | |
Não | Object | Se esse campo estiver definido como project, o token poderá ser usado para acessar apenas serviços em projetos específicos, como o ECS. Para obter detalhes sobre o escopo do serviço, consulte Permissões do sistema. Você pode especificar id ou name. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
id | Não | String | ID da conta da parte delegante A. Para obter detalhes sobre como obter o ID da conta, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. Você pode especificar id ou name. |
name | Não | String | Nome da conta da parte delegante A. Para obter detalhes sobre como obter o ID da conta, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. Você pode especificar id ou name. |
Parâmetro | Obrigatório | Tipo | Descrição |
|---|---|---|---|
id | Não | String | ID do projeto da parte delegante A. Para obter detalhes sobre como obter o ID do projeto, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. Você pode especificar id ou name. |
name | Não | String | Nome do projeto da parte delegante A. Para obter detalhes sobre como obter o nome do projeto, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência. Você pode especificar id ou name. |
Exemplo de solicitação
- Solicitação para usar um token de usuário com permissões de Agent Operator do usuário do IAM IAMUserB da parte delegada B (nome da conta: IAMDomainB) para obter outro token para gerenciar os recursos da parte delegante A (nome da conta: IAMDomainA) no projeto ap-southeast-1 por meio da agência IAMAgency, sem exibir informações de catálogo na resposta
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 } } } } - Solicitação para usar um token de usuário com permissões de Agent Operator do usuário do IAM IAMUserB da parte delegada B (nome da conta: IAMDomainB) para obter outro token para gerenciar todos os recursos da parte delegante A (nome da conta: IAMDomainA) por meio da agência 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 resposta
Parâmetro | Tipo | Descrição |
|---|---|---|
X-Subject-Token | String | Token assinado. |
Parâmetro | Tipo | Descrição |
|---|---|---|
Object | Informações do token. |
Parâmetro | Tipo | Descrição |
|---|---|---|
methods | Array of strings | Método para obter o token. |
expires_at | String | Hora em que o token expirará. NOTA: O valor é uma hora UTC no formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por exemplo, 2023-06-28T08:56:33.710000Z. Para obter detalhes sobre os formatos de data e carimbo de data/hora, consulte ISO-8601. |
issued_at | String | Hora em que o token foi emitido. NOTA: O valor é uma hora UTC no formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por exemplo, 2023-06-28T08:56:33.710000Z. Para obter detalhes sobre os formatos de data e carimbo de data/hora, consulte ISO-8601. |
Object | Informações sobre a parte delegada B. | |
Array of objects | Informações do catálogo. | |
Object | Informações da conta da parte delegante A. Esse parâmetro é retornado somente quando o parâmetro scope no corpo da solicitação foi definido como domain. | |
Object | Informações do projeto da parte delegante A. Este parâmetro é retornado somente quando o parâmetro scope no corpo da solicitação foi definido como project. | |
Array of objects | Informações de permissões do token. | |
Object | Informações sobre a agência criada pela parte delegante A. |
Parâmetro | Tipo | Descrição |
|---|---|---|
Object | Informações sobre um usuário do IAM da parte delegada B. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome de usuário do IAM. |
id | String | ID do usuário do IAM. |
Object | Informações da conta da parte delegada B. | |
password_expires_at | String | Tempo de expiração da senha do usuário do IAM. Se este parâmetro não for especificado, a senha nunca expirará. NOTA: O valor é uma hora UTC no formato AAAA-MM-DDTHH:mm:ss.ssssssZ, por exemplo, 2023-06-28T08:56:33.710000Z. Para obter detalhes sobre os formatos de data e carimbo de data/hora, consulte ISO-8601. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome da conta da parte delegada B. |
id | String | ID da conta da parte delegada B. |
Parâmetro | Tipo | Descrição |
|---|---|---|
Array of objects | Informações do ponto de extremidade. | |
id | String | ID do serviço. |
name | String | Nome do serviço. |
type | String | Tipo do serviço ao qual a API pertence. |
Parâmetro | Tipo | Descrição |
|---|---|---|
id | String | ID do ponto de extremidade. |
interface | String | Visibilidade da API. public indica que a API está disponível para acesso público. |
region | String | Região à qual o ponto de extremidade pertence. |
region_id | String | ID da região. |
url | String | URL do ponto de extremidade. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome da conta da parte delegante A. |
id | String | ID da conta da parte delegante A. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome do projeto da parte delegante A. |
id | String | ID do projeto da parte delegante A. |
Object | Informações da conta da parte delegante A. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome da conta da parte delegante A. |
id | String | ID da conta da parte delegante A. |
Parâmetro | Tipo | Descrição |
|---|---|---|
name | String | Nome de permissão. |
id | String | ID de permissão. O valor padrão é 0, que não corresponde a nenhuma permissão. |
Exemplo de resposta
Código de status: 201
A solicitação foi bem-sucedida.
Exemplo 1: resposta à solicitação de uso de um token de usuário com permissões de Agent Operator do usuário do IAM IAMUserB da parte delegada B (nome da conta: IAMDomainB) para obter outro token para gerenciar todos os recursos da parte delegante A (nome da conta: IAMDomainA) por meio da agência IAMAgency
Exemplo 2: resposta à solicitação de uso de um token de usuário com permissões de Agent Operator do usuário do IAM IAMUserB da parte delegada B (nome da conta: IAMDomainB) para obter outro token para gerenciar os recursos da parte delegante A (nome da conta: IAMDomainA) no projeto ap-southeast-1 por meio da agência IAMAgency, sem exibir informações de catálogo na resposta
- Exemplo 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": "" } } } } - Exemplo 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 status: 400
Parâmetros inválidos.
{
"error": {
"code": 400,
"message": "The request body is invalid",
"title": "Bad Request"
}
} Código de status: 401
Falha na autenticação.
{
"error": {
"code": 401,
"message": "The X-Auth-Token is invalid!",
"title": "Unauthorized"
}
} Código de status: 403
Acesso negado.
- O token de usuário especificado em X-Auth-Token para o usuário B da parte delegada B não tem a permissão de Agent Operator. Por favor, solicite a permissão necessária.
{
"error": {
"code": 403,
"message": "You have no right to do this action",
"title": "Forbidden"
}
} Códigos de status
Código de status | Descrição |
|---|---|
201 | A solicitação foi bem-sucedida. |
400 | Parâmetros inválidos. |
401 | Falha na autenticação. |
403 | Acesso negado. (A possível causa desse erro é que a parte delegada não tem a permissão de Agent Operator.) |
404 | O recurso solicitado não pode ser encontrado. |
500 | Erro de servidor interno. |
503 | Serviço indisponível. |
Códigos de erro
Nenhum

