获取Token并检验Token的有效期
操作场景
Token的有效期为24小时,获取Token后建议及时保存,避免频繁调用。无论是否重新获取Token,在有效期内的Token始终有效。使用Token前请确保Token离过期有足够的时间,防止调用API的过程中Token过期导致调用API失败。
针对用户调用接口中常常出现的Token过期导致的调用失败问题,本文将介绍获取Token并检验Token有效期的方法。
若Token即将超期(无法满足一次完整的API调用或者完整的一套组合的调用)则需要重新获取Token,防止调用过程中Token超期,调用中断。或推荐您使用SDK,采用AK/SK方式认证鉴权。
操作视频及相关链接
- 获取Token的操作指导可以参考:https://bbs.huaweicloud.com/videos/102987
- 获取IAM用户Token(使用密码)
- 检验Token有效性
- 在API Explorer中运行调试获取Token。
- 在API Explorer中运行检验Token有效性。
获取Token
接口调用前需要认证鉴权,因此需要提前获取token信息。后续调用API的消息头中“X-Auth-Token”的值即为Token值。
本例以获取华东-上海二区域的Token为例:
- 请求URI:POST https://iam.cn-east-2.myhuaweicloud.com/v3/auth/tokens
- 请求消息头:Content-Type=application/json
- 请求消息体:
{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "请填写用户名", "password": "$ADMIN_PASS", //建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "domain": { "name": "用户所属的账号名称" } } } }, "scope": { "project": { "name": "区域名称,本例为cn-east-2" } } } }
- 查看获取的Token:单击响应头,x-subject-token的取值即为获取的Token。请妥善保存Token信息,在后续的创建云服务器的请求头信息中需要使用Token认证。
General: Request URL: https://iam.cn-east-2.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_cn-east-2_null_9bbec3983f3c7a5c146e709251760467 x-request-id: d7796611318416bc8ffb2948a47fede8 x-subject-token: MIISMAYJKoZIhvcNAQ...7xMUw== x-xss-protection: 1; mode=block;
- 查看Token过期时间:响应体中“expires_at”表示该Token过期时间。
{ "token": { "expires_at": "2021-05-28T01:24:49.905000Z", ... } }
检验Token的有效期
调用API时判断Token有效期是否充足,若您的应用程序缓存了Token,建议每12小时刷新一次Token。以确保Token有足够长的有效期。
您还可以主动查询某个Token的过期时间。通过调用检验Token有效性的接口查看Token的有效时期。
您可以在API Explorer中调试该接口。
本例以检验华东-上海二区域的Token为例: