Obtenção de um token de usuário por meio de senha e autenticação de MFA virtual
Função
Essa API é fornecida para que os usuários do IAM obtenham um token por meio de nome de usuário/senha e autenticação de MFA virtual. Para usar essa API, certifique-se de que a proteção de logon virtual baseada em MFA tenha sido ativada para o usuário do IAM. 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.
Links rápidos
Obtenção de um token como um usuário do IAM
Obtenção de um token usando uma conta principal
Obtenção de um token usando uma HUAWEI ID
Obtenção de um token usando uma conta da Huawei Cloud
Obtenção de um token como usuário de sistema de terceiros
Período de validade de um token
Perguntas frequentes sobre a obtenção de um token
- Obtenção de um token como um usuário do IAM
Consulte Parâmetros de solicitação.
- Obtenção de um token usando uma conta
Verifique se a sua conta foi atualizada da conta da Huawei Cloud para a HUAWEI ID consultando Como saber com qual conta estou conectado?
- Obtenção de um token usando uma HUAWEI ID
Você não pode usar diretamente uma HUAWEI ID para obter um token. Você precisa criar um usuário do IAM, atribuir permissões ao usuário e usar o usuário para obter um token.
- Obtenção de um token usando uma conta da Huawei Cloud
Consulte Parâmetros de solicitação.
- Obtenção de um token como usuário de sistema de terceiros
Se você for usuário de um sistema de terceiros, não poderá obter um token usando o nome de usuário e a senha que usa para autenticação de identidade federada. Em vez disso, você deve acessar a página de logon da Huawei Cloud, clicar em Forgot password, clicar em Reset Huawei Cloud account password e definir uma senha.
- Período de validade de um token
- 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. A obtenção de um novo token não afeta a validade do token existente.
- O token se tornará inválido em 30 minutos se ocorrer uma das situações a seguir:
- O usuário do IAM é excluído ou desativado.
- A senha ou chave de acesso do usuário do IAM é alterada.
- As permissões do usuário do IAM são alteradas (devido a pagamentos pendentes, aprovação de aplicação de OBT ou modificação de permissão).
- Se The token must be updated for retornado quando um token for usado para chamar uma API de serviço de nuvem, o token expirou. Você precisa obter um novo token.
- Perguntas frequentes sobre a obtenção de um token
Nome de usuário ou senha incorretos: verifique se o nome de usuário e a senha digitados estão corretos. Se o nome de usuário e a senha estiverem corretos, mas o erro persistir, verifique se você usou uma HUAWEI ID para obter um token. Uma HUAWEI ID não pode ser usada diretamente para obter um token. Você precisa criar um usuário do IAM, conceder permissões ao usuário e usar o usuário para obter um token.
Sem permissões de acesso à API: antes de chamar uma API, certifique-se de que você ativou o acesso programático.
- Operações relacionadas
- Para obter um token com permissões de Security Administrator, consulte Como obter um token com permissões de Security Administrator?
- Para obter detalhes sobre como obter um token usando o Postman, consulte Como obter um token de usuário usando o Postman?
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. |
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 aplicação do token. O valor pode ser project ou domain.
NOTA:
|
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
methods |
Sim |
Array of strings |
Método de autenticação. Opções:
|
Sim |
Object |
Informações de autenticação de senha de usuário do IAM.
NOTA:
|
|
Sim |
Object |
Informações de autenticação. Este parâmetro é obrigatório somente quando a autenticação de logon baseada em MFA virtual está ativada. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
Sim |
Object |
Informações sobre o usuário do IAM que está solicitando a obtenção de um token. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
Sim |
Object |
Informações sobre a conta usada para criar o usuário do IAM. Para obter detalhes sobre a relação entre contas e usuários do IAM, consulte Relação entre uma conta e seus usuários de IAM. |
|
name |
Sim |
String |
Nome de usuário do IAM. |
password |
Sim |
String |
Senha do usuário do IAM.
NOTA:
|
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
name |
Sim |
String |
Nome da conta. Para obter detalhes sobre como obter o nome da conta, 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 |
---|---|---|---|
Sim |
Object |
Informações do usuário do IAM. Certifique-se de que a proteção de logon baseada em MFA virtual tenha sido ativada para o usuário do IAM. Para obter detalhes, consulte Operações críticas. |
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
id |
Sim |
String |
ID do usuário do IAM para o qual a proteção de logon baseada em MFA virtual foi ativada. |
passcode |
Sim |
String |
Código de verificação de MFA, que pode ser obtido do dispositivo de MFA virtual vinculado ao usuário do IAM. Para obter detalhes, consulte Como obter os códigos de verificação de MFA?
NOTA:
Para obter um token com sucesso, verifique se o código de verificação fornecido está correto. |
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. O 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. 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. |
name |
Não |
String |
Nome da conta. Para obter detalhes sobre como obter o nome da conta, 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 |
---|---|---|---|
id |
Não |
String |
ID do projeto. 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. |
name |
Não |
String |
Nome do projeto. 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. |
Exemplo de solicitação
- Exemplo 1: solicitação para obter um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: domain). Você pode obter o nome do usuário e da conta do IAM na página My Credential do console. Para mais detalhes, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência.
POST https://iam.myhuaweicloud.com/v3/auth/tokens
{ "auth": { "identity": { "methods": [ "password", "totp" ], "password": { "user": { "name": "IAMUser", // IAM user name. "password": "IAMPassword", // IAM user password. "domain": { "name": "IAMDomain" // Name of the account to which the IAM user belongs. } } }, "totp": { "user": { "id": "7116d09f88fa41908676fdd4b039e...", // IAM user ID. "passcode": "******" // Virtual MFA verification code. } } }, "scope": { "domain": { "name": "IAMDomain" // Name of the account to which the IAM user belongs. } } } }
- Exemplo 2: solicitação para obter um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: projeto ap-southeast-1) sem exibir informações de catálogo na resposta. Você pode obter o nome do usuário e da conta do IAM na página My Credential do console. Para mais detalhes, consulte Obtenção de informações sobre conta, usuário do IAM, grupo, projeto, região e agência.
POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true
{ "auth": { "identity": { "methods": [ "password", "totp" ], "password": { "user": { "name": "IAMUser", // IAM user name. "password": "IAMPassword", // IAM user password. "domain": { "name": "IAMDomain" // Name of the account to which the IAM user belongs. } } }, "totp": { "user": { "id": "7116d09f88fa41908676fdd4b039e...", // IAM user ID. "passcode": "******" // Virtual MFA verification code. } } }, "scope": { "project": { "name": "ap-southeast-1" //Project name } } } }
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 |
---|---|---|
Array of objects |
Informações do catálogo. |
|
Object |
Informações da conta do usuário do IAM que solicita o token. Este parâmetro é retornado somente quando o parâmetro scope no corpo da solicitação foi definido como domain. |
|
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. |
mfa_authn_at |
String |
Tempo de autenticação MFA.
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. |
methods |
Array of strings |
Método para obter o token. |
Object |
Informações do projeto do usuário do IAM. 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 o usuário do IAM que solicita o token. |
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 |
---|---|---|
Object |
Informações da conta do projeto. |
|
id |
String |
ID do projeto. |
name |
String |
Nome do projeto. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
ID da conta. |
name |
String |
Nome da conta. |
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. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
name |
String |
Nome de usuário do IAM. |
id |
String |
ID do usuário do IAM. |
password_expires_at |
String |
Tempo de expiração da senha. 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. |
Object |
Informações sobre a conta usada para criar o usuário do IAM. |
Exemplo de resposta
Código de status: 201
A solicitação foi bem-sucedida.
- Exemplo 1: resposta à solicitação de obtenção de um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: domain)
Parameters in the response header (obtained token) X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
Parameters in the response body { "token": { "expires_at": "2020-01-04T09:08:49.965000Z", "mfa_authn_at": "2020-01-03T09:08:49.965000Z", "methods": [ "password", "totp" ], "catalog": [ { "endpoints": [ { "id": "33e1cbdd86d34e89a63cf8ad16a5f...", "interface": "public", "region": "*", "region_id": "*", "url": "https://iam.myhuaweicloud.com/v3.0" } ], "id": "100a6a3477f1495286579b819d399...", "name": "iam", "type": "iam" }, { "endpoints": [ { "id": "29319cf2052d4e94bcf438b55d143...", "interface": "public", "region": "*", "region_id": "*", "url": "https://bss.sample.domain.com/v1.0" } ], "id": "c6db69fabbd549908adcb861c7e47...", "name": "bssv1", "type": "bssv1" } ], "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "secu_admin" }, { "id": "0", "name": "te_agency" } ], "issued_at": "2020-01-03T09:08:49.965000Z", "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } }
- Exemplo 2: resposta à solicitação de obtenção de um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: projeto ap-southeast-1) sem exibir informações de catálogo na resposta
Parameters in the response header (obtained token) X-Subject-Token:MIIatAYJKoZIhvcNAQcCoIIapTCCGqECAQExDTALB...
Parameters in the response body { "token": { "expires_at": "2020-01-04T09:05:22.701000Z", "mfa_authn_at": "2020-01-03T09:05:22.701000Z", "methods": [ "password", "totp" ], "catalog": [], "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "op_gated_OBS_file_protocol" }, { "id": "0", "name": "op_gated_Video_Campus" } ], "project": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "aa2d97d7e62c4b7da3ffdfc11551f...", "name": "ap-southeast-1" }, "issued_at": "2020-01-03T09:05:22.701000Z", "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "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.
- Se você for usuário de um sistema de terceiros, não poderá obter um token usando o nome de usuário e a senha que usa para autenticação de identidade federada. Vá para a página de logon da Huawei Cloud, clique em Forgot password e Reset Huawei Cloud account password e defina uma nova senha.
- Se a sua conta da Huawei Cloud tiver sido atualizada para uma HUAWEI ID, você não poderá obter um token usando a HUAWEI ID. Em vez disso, você pode criar um usuário do IAM, conceder as permissões necessárias ao usuário e obter um token como o usuário.
{ "error": { "code": 401, "message": "The username or password is wrong.", "title": "Unauthorized" } }
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. |
404 |
O recurso solicitado não pode ser encontrado. |
500 |
Erro de servidor interno. |
503 |
Serviço indisponível. |
Códigos de erro
Nenhum