相關(guān)資料鏈接
獲取Token 并檢驗(yàn)Token的有效期
操作場景
Token的有效期為24小時(shí),獲取Token后建議及時(shí)保存,避免頻繁調(diào)用。無論是否重新獲取Token,在有效期內(nèi)的Token始終有效。使用Token前請(qǐng)確保Token離過期有足夠的時(shí)間,防止調(diào)用API的過程中Token過期導(dǎo)致調(diào)用API失敗?! ?/p>
針對(duì)用戶調(diào)用接口中常常出現(xiàn)的Token過期導(dǎo)致的調(diào)用失敗問題,我們介紹了獲取Token并檢驗(yàn)Token有效期的方法?!?/p>
若Token即將超期(無法滿足一次完整的API調(diào)用或者完整的一套組合的調(diào)用)則需要重新獲取Token,防止調(diào)用過程中Token超期,調(diào)用中斷?;蛲扑]您使用SDK,采用AK/SK方式認(rèn)證鑒權(quán)?! ?/p>
獲取Token
接口調(diào)用前需要認(rèn)證鑒權(quán),因此需要提前獲取token信息。后續(xù)調(diào)用API的消息頭中“X-Auth-Token”的值即為Token值。
本例以獲取華東-上海二區(qū)域的Token為例:
請(qǐng)求URI:POST https://iam.cn-east-2.myhuaweicloud.com/v3/auth/tokens
請(qǐng)求消息頭:Content-Type=application/json
請(qǐng)求消息體:
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "請(qǐng)?zhí)顚懹脩裘?,
"password": "用戶登錄密碼",
"domain": {
"name": "用戶所屬的帳號(hào)名稱"
}
}
}
},
"scope": {
"project": {
"name": "區(qū)域名稱,本例為cn-east-2"
}
}
}
}
查看獲取的Token:單擊響應(yīng)頭,x-subject-token的取值即為獲取的Token。請(qǐng)妥善保存Token信息,在后續(xù)的創(chuàng)建 云服務(wù)器 的請(qǐng)求頭信息中需要使用Token認(rèn)證。
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
...
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過期時(shí)間:響應(yīng)體中“expires_at”表示該Token過期時(shí)間。
{
"token": {
"expires_at": "2021-05-28T01:24:49.905000Z",
...
}
}
檢驗(yàn)Token的有效期
調(diào)用API時(shí)判斷Token有效期是否充足,若您的應(yīng)用程序緩存了Token,建議每12小時(shí)刷新一次Token。以確保Token有足夠長的有效期。
您還可以主動(dòng)查詢某個(gè)Token的過期時(shí)間。通過調(diào)用檢驗(yàn)Token有效性的接口查看Token的有效時(shí)期。
本例以檢驗(yàn)華東-上海二區(qū)域的Token為例:
請(qǐng)求URI:GET https://iam.cn-east-2.myhuaweicloud.com/v3/auth/tokens
請(qǐng)求消息頭:
Content-Type=application/json;charset=utf8
X-Auth-Token:管理員校驗(yàn)本帳號(hào)中 IAM 用戶的token的有效性:擁有Security Administrator權(quán)限的token。
IAM用戶校驗(yàn)自己token的有效性:該IAM用戶的token(無需特殊權(quán)限)。
本例中使用的是IAM用戶因此X-Auth-Token與待校驗(yàn)的Token相同。
X-Subject-Token:待校驗(yàn)的token?! ?/p>
查看Token過期時(shí)間:響應(yīng)體中“expires_at”表示該Token過期時(shí)間。
若Token即將超期(無法滿足一次完整的API調(diào)用或者完整的一套組合的調(diào)用)則需要重新獲取Token,防止調(diào)用過程中Token超期,調(diào)用中斷。
{
"token": {
"expires_at": "2021-05-28T01:24:49.905000Z",
...
}
}