Obtenção de um token de usuário por meio de 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 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 principal
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
- Se a proteção de logon 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 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. |
|
Não |
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. O conteúdo deste campo é ["password"]. |
Sim |
Object |
Informações de autenticação de senha de um usuário do IAM.
NOTA:
|
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 |
---|---|---|---|
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. 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. Se auth.scope estiver definido como domain, o token obtido poderá ser usado para serviços globais. O id ou o name deve ser especificado. |
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. Se auth.scope estiver definido como domain, o token obtido poderá ser usado para serviços globais. O id ou o name deve ser especificado. |
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. Se auth.scope estiver definido como project, o token obtido poderá ser usado para serviços no nível do projecto. O id ou o name deve ser especificado. O ID do projeto varia dependendo da região onde o serviço está localizado. |
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. Se auth.scope estiver definido como project, o token obtido poderá ser usado para serviços no nível do projecto. O id ou o name deve ser especificado. |
Exemplo de solicitação
- Solicitação para obter um token para o usuário do IAM IAMUser (senha: IAMPassword; nome da conta: IAMDomain; escopo: project 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" ], "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). 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" ], "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, que tem menos de 32 KB. |
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. |
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.
- 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. Verifique se o corpo da solicitação está em conformidade com a sintaxe JSON.
{ "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