Obtenção de um token de usuário por meio da autenticação de senha
Função
Essa API é usada para obter um token de usuário usando o nome de usuário e a senha. Um token é uma credencial de acesso emitida para um usuário do IAM 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 de usuário para autenticação.
A API pode ser chamada usando o ponto de extremidade global e pontos de extremidade específicos da região. 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 mestre
Obtenção de um token usando um HUAWEI ID
Obtenção de um token usando uma conta da HUAWEI CLOUD
Obtenção de um token como um 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 mestre
Verifique se a sua conta foi atualizada da conta da HUAWEI CLOUD para o HUAWEI ID consultando Como saber qual conta eu estou logado com?
- Obtenção de um token usando um HUAWEI ID
Você não pode usar diretamente um 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 um usuário de sistema de terceiros
Se você for um usuário do sistema de um sistema de terceiros, não será possível obter um token usando o nome de usuário e a senha usados para autenticação de identidade federada. Em vez disso, você deve acessar a página de login 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 hours. Armazene em cache o token para evitar chamadas frequentes de API. Certifique-se de que o token é válido enquanto você o usa. 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 se qualquer uma das seguintes situações ocorrer:
- 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 pedido de OBT ou modificação de permissão).
- Se The token must be updated for retornado quando um token é 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 inseridos estão corretos. Se o nome de usuário e a senha estiverem corretos, mas o erro persistir, verifique se você usou um HUAWEI ID para obter um token. Um HUAWEI ID não pode ser usado 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ê habilitou acesso programático.
- Operações relacionadas
- Se a proteção de login tiver sido ativada e o método de verificação tiver sido definido como dispositivo de MFA virtual, obtenha um token como usuário do IAM seguindo as instruções fornecidas em Obtenção de um token de usuário por meio de senha e autenticação de MFA virtual.
- Para obter um token com permissões Security Administrator, consulte Como obter um token com permissões de administrador de segurança?
- 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 |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
nocatalog |
Não |
String |
Se este parâmetro for definido, nenhuma informação de catálogo será exibida na resposta. Qualquer conjunto de caracteres para este parâmetro indica que nenhuma informação de catálogo será exibida. |
Parâmetros de solicitação
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
Content-Type |
Sim |
String |
Preencha application/json;charset=utf8 neste campo. |
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
Sim |
Object |
Informações de autenticação. |
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
Sim |
Object |
Parâmetros de autenticação. |
|
Não |
Object |
Escopo de aplicação do token. O valor pode ser project ou domain.
NOTA:
|
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
methods |
Sim |
Array of strings |
Método de autenticação. O conteúdo deste campo é ["password"]. |
Sim |
Object |
Informações de autenticação de senha de um usuário do IAM.
NOTA:
|
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
Sim |
Object |
Informações sobre o usuário do IAM que está solicitando a obtenção de um token. |
Parâmetro |
Obrigatoriedade |
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 do IAM. |
|
name |
Sim |
String |
Nome de usuário do IAM. |
password |
Sim |
String |
Senha do usuário do IAM.
NOTA:
|
Parâmetro |
Obrigatoriedade |
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 de conta, usuário do IAM, grupo, projeto, região e agência. |
Parâmetro |
Obrigatoriedade |
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 |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
id |
Não |
String |
ID da conta. Para obter detalhes sobre como conseguir o ID de domínio, consulte Obtenção de informações de 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. Para obter detalhes sobre como obter o nome da conta, consulte Obtenção de informações de conta, usuário do IAM, grupo, projeto, região e agência. Você pode especificar id ou name. |
Parâmetro |
Obrigatoriedade |
Tipo |
Descrição |
---|---|---|---|
id |
Não |
String |
ID do projeto. Para obter detalhes de como conseguir o ID de domínio, consulte Obtenção de informações de 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. Para obter detalhes sobre como conseguir o ID de domínio, consulte Obtenção de informações de 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 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
POST https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" // Name of the account to which the IAM user belongs. }, "name": "IAMUser", // IAM user name. "password": "IAMPassword" // IAM user password. } } }, "scope": { "project": { "name": "ap-southeast-1" //Project name } } } }
- Solicitação para obter um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: domain)
POST https://iam.myhuaweicloud.com/v3/auth/tokens
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "IAMDomain" // Name of the account to which the IAM user belongs. }, "name": "IAMUser", // IAM user name. "password": "IAMPassword" // IAM user password. } } }, "scope": { "domain": { "name": "IAMDomain" // Name of the account to which the IAM user 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 |
---|---|---|
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á. |
issued_at |
String |
Hora em que o token foi emitido. |
methods |
Array of strings |
Método para obtenção do 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ção do ponto final. |
|
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 final. |
interface |
String |
Visibilidade da API. public indica que a API está disponível para acesso público. |
region |
String |
Região à qual o ponto final pertence. |
region_id |
String |
ID da região. |
url |
String |
URL do ponto final. |
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 |
Horário UTC quando a senha expira. Se este parâmetro estiver vazio, indica que a senha tem validade ilimitada. |
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.
- 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": { "catalog": [], "expires_at": "2020-01-04T09:05:22.701000Z", "issued_at": "2020-01-03T09:05:22.701000Z", "methods": [ "password" ], "project": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "aa2d97d7e62c4b7da3ffdfc11551f...", "name": "ap-southeast-1" }, "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "op_gated_OBS_file_protocol" }, { "id": "0", "name": "op_gated_Video_Campus" } ], "user": { "domain": { "id": "d78cbac186b744899480f25bd022f...", "name": "IAMDomain" }, "id": "7116d09f88fa41908676fdd4b039e...", "name": "IAMUser", "password_expires_at": "" } } }
- 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": { "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" }, "expires_at": "2020-01-04T09:08:49.965000Z", "issued_at": "2020-01-03T09:08:49.965000Z", "methods": [ "password" ], "roles": [ { "id": "0", "name": "te_admin" }, { "id": "0", "name": "secu_admin" }, { "id": "0", "name": "te_agency" } ], "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
Autenticação falhou.
- Se você for um usuário de um sistema de terceiros, não será possível obter um token usando o nome de usuário e a senha usados para autenticação de identidade federada. Vá para a página de login da HUAWEI CLOUD, clique em Forgot password, clique em Reset HUAWEI CLOUD account password, defina uma nova senha.
- Se a sua conta da HUAWEI CLOUD tiver sido atualizada para um HUAWEI ID, não poderá obter um token utilizando o 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 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 |
Autenticação falhou. |
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