華為云計(jì)算 云知識(shí) 獲取Token并檢驗(yàn)Token的有效期
獲取Token并檢驗(yàn)Token的有效期

  
相關(guān)資料鏈接

了解使用 API購買 ECS的常見問題和處理方法

獲取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",
        ...
    }
}