Obtención de un token y comprobación del período de validez del token
Escenarios
El período de validez de un token es de 24 horas. Después de obtener un token, guárdelo para evitar llamadas frecuentes a la API. El token original seguirá siendo válido hasta que expire independientemente de si se ha obtenido un nuevo token. Asegúrese de que el token es válido cuando lo usa. El uso de un token que caducará pronto puede provocar fallos en las llamadas a la API.
Esta sección describe cómo obtener un token y comprobar su período de validez para resolver los errores de llamada a la API causados por la expiración del token.
Si el token está a punto de caducar, (no se puede completar una llamada a la API o un conjunto de llamadas a la API), necesita obtener un nuevo token para evitar que la llamada se interrumpa debido a la expiración del token.
Enlaces útiles
Obtención de un Token
Necesitas obtener un token para la autenticación antes de llamar a una API. El valor X-Auth-Token en el encabezado de solicitud es el valor de token.
El siguiente es un ejemplo para mostrar cómo obtener el token de la región CN-Hong Kong.
- Solicitud de URI: POST https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
- Encabezado de la solicitud: Content-Type=application/json
- Solicitar cuerpo del mensaje:
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "Enter a username", "password": "Enter the password for login.", "domain": { "name": "Enter the account name." } } } }, "scope": { "project": { "name": "Enter a region name. In this example, the region is ap-southeast-1." } } } }
- Para ver el token obtenido, haga clic en el encabezado de respuesta. El valor de x-subject-token es el token obtenido. Mantenga el token seguro porque se utilizará en el encabezado de solicitud para crear ECS.
General: Request URL: https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens Request Method: POST Status Code: 201 Response Headers: cache-control: no-cache, no-store, must-revalidate connection: keep-alive content-length: 18401 content-type: application/json; charset=UTF-8 date: Thu, 27 May 2021 01:24:49 GMT expires: Thu, 01 Jan 1970 00:00:00 GMT pragma: no-cache server: api-gateway strict-transport-security: max-age=31536000; includeSubdomains; via: proxy A x-content-type-options: nosniff x-download-options: noopen x-frame-options: SAMEORIGIN x-iam-trace-id: token_ap-southeast-1_null_9bbec3983f3c7a5c146e709251760467 x-request-id: d7796611318416bc8ffb2948a47fede8 x-subject-token: MIISMAYJKoZIhvcNAQ...7xMUw== x-xss-protection: 1; mode=block;
- El valor expires_at en el cuerpo de la respuesta es el tiempo de expiración del token.
{ "token": { "expires_at": "2021-05-28T01:24:49.905000Z", ... } }
Comprobación del período de validez del token
Al realizar una llamada a la API, el sistema comprueba si el período de validez del token es lo suficientemente largo. Si su aplicación ha almacenado el token en caché, se recomienda que el token se actualice cada 12 horas para asegurarse de que tiene un período de validez lo suficientemente largo.
Puede consultar el tiempo de caducidad de un token haciendo referencia a Verificar un Token.
El siguiente es un ejemplo para mostrar cómo verificar el token de la región CN-Hong Kong.
- Solicitud de URI: GET https://iam.ap-southeast-1.myhuaweicloud.com/v3/auth/tokens
- Encabezado de solicitud:
- Content-Type=application/json;charset=utf8
- X-Auth-Token: Se requiere un token con permisos de Security Administrator si el administrator está solicitando verificar el token de un usuario de IAM.
Se requiere el token de usuario (sin requisitos de permisos especiales) de un usuario de IAM si el usuario está solicitando verificar su propio token.
Este ejemplo utiliza el usuario IAM y, por lo tanto, el X-Auth-Token es el mismo que el token que se va a verificar
- X-Subject-Token: Token a verificar.
- El valor expires_at en el cuerpo de la respuesta es el tiempo de expiración del token.
Si el token está a punto de caducar, (no se puede completar una llamada a la API o un conjunto de llamadas a la API), necesita obtener un nuevo token para evitar que la llamada se interrumpa debido a la expiración del token.
{ "token": { "expires_at": "2021-05-28T01:24:49.905000Z", ... } }