Obtención de un token de usuario mediante autenticación de contraseña
Función
Esta API se utiliza para obtener un token de usuario utilizando el nombre de usuario y la contraseña. Un token es una credencial de acceso emitida a un usuario de IAM 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 usuario para la 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.
Enlaces rápidos
Obtención de un token como usuario de IAM
Obtención de un token mediante una cuenta maestra
Obtención de un token con un ID de HUAWEI
Obtención de un token con una cuenta de Huawei Cloud
Obtención de un token como usuario del sistema de terceros
Período de validez de un token
Preguntas frecuentes sobre cómo obtener un token
- Obtención de un token como usuario de IAM
Véase Parámetros de solicitud.
- Obtención de un token mediante una cuenta maestra
Comprueba si tu cuenta se ha actualizado de Huawei Cloud a HUAWEI ID consultando ¿Cómo sé si he iniciado sesión con un HUAWEI ID o una cuenta de Huawei Cloud?
- Obtención de un token con un ID de HUAWEI
No puede usar directamente un ID de HUAWEI para obtener un token. Debe crear un usuario de IAMasignar permisos a los usuarios y utilizar el usuario para obtener un token.
- Obtención de un token con una cuenta de Huawei Cloud
Véase Parámetros de solicitud.
- Obtención de un token como usuario del sistema de terceros
Si es usuario de un sistema de terceros, no puede obtener un token utilizando el nombre de usuario y la contraseña que utiliza para la autenticación de identidad federada. En su lugar, debe ir a la página de inicio de sesión de Huawei Cloud, haga clic en Forgot password haga clic en Reset Huawei Cloud account password y establecer una contraseña.
- Período de validez de un token
- 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. La obtención de un nuevo token no afecta a la validez del token existente.
- El token quedará inválido en un plazo de 30 minutos si se produce alguna de las siguientes situaciones:
- El usuario de IAM se elimina o deshabilita.
- Se cambia la contraseña o la clave de acceso del usuario de IAM.
- Se cambian los permisos del usuario de IAM (debido a pagos pendientes, aprobación de la solicitud OBT o modificación del permiso).
- Si The token must be updated se devuelve cuando se utiliza un token para invocar a una API de servicio en la nube, el token ha caducado. Necesita obtener un nuevo token.
- Preguntas frecuentes sobre cómo obtener un token
Nombre de usuario o contraseña incorrectos: Compruebe si el nombre de usuario y la contraseña introducidos son correctos. Si el nombre de usuario y la contraseña son correctos pero el error persiste, compruebe si ha utilizado un ID de HUAWEI para obtener un token. Un ID de HUAWEI no se puede utilizar directamente para obtener un token. Es necesario crear un usuario de IAM, conceder permisos al usuario y utilizar el usuario para obtener un token.
Sin permisos de acceso a la API: antes de llamar a una API, asegúrese de que ha habilitado el acceso programático habilitado para acceso programático.
- Operaciones relacionadas
- Si se ha habilitado la protección de inicio de sesión y el método de verificación se ha establecido en un dispositivo MFA virtual, obtenga un token como usuario de IAM siguiendo las instrucciones proporcionadas en Obtención de un token de usuario mediante contraseña y autenticación MFA virtual.
- Para obtener un token con permisos de Security Administrator, consulte ¿Cómo obtengo un token con permisos de administrador de seguridad?
- Para obtener detalles sobre cómo obtener un token usando Postman, consulte ¿Cómo obtengo un token de usuario usando Postman?
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. |
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. |
|
No |
Object |
Ámbito de aplicación del token. El valor puede ser project o domain.
NOTA:
|
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
methods |
Sí |
Array of strings |
Método de autenticación. El contenido de este campo es ["password"]. |
Sí |
Object |
Información de autenticación de contraseña de un usuario de IAM.
NOTA:
|
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
Sí |
Object |
Información sobre el usuario de IAM que está solicitando obtener un token. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
Sí |
Object |
Información sobre la cuenta utilizada para crear el usuario de IAM. Para obtener más información sobre la relación entre cuentas y usuarios de IAM, consulte Relación entre una cuenta y sus usuarios de IAM. |
|
name |
Sí |
String |
Nombre de usuario de IAM. |
password |
Sí |
String |
Contraseña del usuario IAM.
NOTA:
|
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
name |
Sí |
String |
Nombre de cuenta. Para obtener más información sobre cómo obtener el nombre de la cuenta, 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 de 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 de sistema. Puede especificar el id o name. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
id |
No |
String |
ID de cuenta. 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. Si auth.scope se establece en domain el token obtenido se puede usar para servicios globales. Debe especificarse id o name. |
name |
No |
String |
Nombre de cuenta. Para obtener más información sobre cómo obtener el nombre de la cuenta, consulte Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y delegación. Si auth.scope se establece en domain el token obtenido se puede usar para servicios globales. Debe especificarse id o name. |
Parámetro |
Obligatorio |
Tipo |
Descripción |
---|---|---|---|
id |
No |
String |
ID del proyecto. 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. Si auth.scope se establece en project, el token obtenido se puede usar para servicios a nivel de proyecto. Debe especificarse id o name. El ID del proyecto varía dependiendo de la región donde se encuentre el servicio. |
name |
No |
String |
Nombre del proyecto. 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. Si auth.scope se establece en project, el token obtenido se puede usar para servicios a nivel de proyecto. Debe especificarse id o name. |
Solicitud de ejemplo
- Solicitud de obtención de un token para el usuario de IAM IAMUser (contraseña: IAMPassword; nombre de cuenta: IAMDomain; alcance: ap-southeast-1 de proyecto) sin mostrar información de catálogo en la respuesta. Puede obtener el nombre de usuario y el nombre de cuenta de IAM en la página My Credential de la consola. Para obtener más información, véase Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y delegación.
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 } } } }
- Solicitud para obtener un token para el usuario de IAM IAMUser (contraseña: IAMPassword; nombre de cuenta: IAMDomain; ámbito: domain) Puede obtener el nombre de usuario y el nombre de cuenta de IAM en la página My Credential de la consola. Para obtener más información, véase Obtención de información de cuenta, usuario de IAM, grupo, proyecto, región y delegación.
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 respuesta
Parámetro |
Tipo |
Descripción |
---|---|---|
X-Subject-Token |
String |
Token firmado, que es inferior a 32 KB. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Object |
Información de token. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Array of objects |
Información del catálogo. |
|
Object |
Información de cuenta del usuario de IAM que solicita el token. Este parámetro se devuelve solo cuando el parámetro de scope en el cuerpo de la solicitud se ha establecido en domain. |
|
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. |
methods |
Array of strings |
Método para obtener el token. |
Object |
Información del proyecto del usuario de IAM. 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 el usuario de IAM que solicita el token. |
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 cuenta. |
id |
String |
ID de cuenta. |
Parámetro |
Tipo |
Descripción |
---|---|---|
Object |
Información de cuenta del proyecto. |
|
id |
String |
ID del proyecto. |
name |
String |
Nombre del proyecto. |
Parámetro |
Tipo |
Descripción |
---|---|---|
id |
String |
ID de cuenta. |
name |
String |
Nombre de cuenta. |
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. |
Parámetro |
Tipo |
Descripción |
---|---|---|
name |
String |
Nombre de usuario de IAM. |
id |
String |
ID de usuario de IAM. |
password_expires_at |
String |
Tiempo de caducidad de la contraseña. 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. |
Object |
Información sobre la cuenta utilizada para crear el usuario de IAM. |
Ejemplo de respuesta
Código de estado: 201
La solicitud se ha realizado correctamente.
- Respuesta a la solicitud de obtención de un token para el usuario IAMUser (contraseña: IAMPassword; nombre de cuenta: IAMDomain; alcance: interfaz de proyecto ap-southeast-1) sin mostrar información de catálogo en la respuesta
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": "" } } }
- Respuesta a la solicitud de obtención de un token para el usuario IAMUser de IAM (contraseña: IAMPassword; nombre de cuenta: IAMDomain; ámbito: 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 estado: 400
Parámetros no válidos. Compruebe si el cuerpo de la solicitud cumple con la sintaxis JSON.
{ "error": { "code": 400, "message": "The request body is invalid", "title": "Bad Request" } }
Código de estado: 401
Error de autenticación.
- Si es usuario de un sistema de terceros, no puede obtener un token utilizando el nombre de usuario y la contraseña que utiliza para la autenticación de identidad federada. Vaya a la página de inicio de sesión de Huawei Cloud, haga clic en Forgot password, haga clic en Reset Huawei Cloud account password y establezca una nueva contraseña.
- Si su cuenta de Huawei Cloud se ha actualizado a un ID de HUAWEI, no puede obtener un token con el ID de HUAWEI. En su lugar, puede crear un usuario de IAM, conceder al usuario los permisos necesarios y obtener un token como usuario.
{ "error": { "code": 401, "message": "The username or password is wrong.", "title": "Unauthorized" } }
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. |
404 |
No se puede encontrar el recurso solicitado. |
500 |
Error de servidor interno. |
503 |
Servicio no disponible. |
Códigos de error
Ninguno