公有云API的認證方式
一般有以下幾種認證方式:
Token認證
AK/SK認證
RSA非對稱加密方式
Token認證
使用Token認證方式完成認證鑒權(quán)時沪袭,用戶首先需要獲取token,在調(diào)用接口時增加“X-XXX-Token”到業(yè)務接口請求消息頭中。
流程
1. 發(fā)送請求,獲取IAM的Endpoint及消息體中的區(qū)域名稱。
2. 獲取Token。請求響應成功后在響應消息頭中包含的“X-YYY-Token”的值即為Token值。
3. 調(diào)用業(yè)務接口捌治,在請求消息頭中增加“X-XXX-Token”,取值為2中獲取的Token纽窟。
原理:任何請求肖油,都附帶token;服務端根據(jù)token判斷請求是否合法臂港。
缺點:若是報文在中途被劫持森枪,那么token就泄露了视搏,這時(token有效期內(nèi))黑客就能夠構(gòu)造任意的請求了。
2 AK/SK認證
2.1 AK/SK 原理
云主機需要通過使用Access Key Id / Secret Access Key加密的方法來驗證某個請求的發(fā)送者身份县袱。
Access Key Id(AK)用于標示用戶浑娜,Secret Access Key(SK)是用戶用于加密認證字符串和云廠商用來驗證認證字符串的密鑰,其中SK必須保密式散。 AK/SK原理使用對稱加解密筋遭。
2.2 AK/SK使用機制
云主機接收到用戶的請求后,系統(tǒng)將使用AK對應的相同的SK和同樣的認證機制生成認證字符串暴拄,并與用戶請求中包含的認證字符串進行比對漓滔。如果認證字符串相同,系統(tǒng)認為用戶擁有指定的操作權(quán)限乖篷,并執(zhí)行相關(guān)操作响驴;如果認證字符串不同,系統(tǒng)將忽略該操作并返回錯誤碼撕蔼。
2.3 流程
判斷用戶請求中是否包含Authorization認證字符串豁鲤。如果包含認證字符串,則執(zhí)行下一步操作罕邀。
基于HTTP請求信息,使用相同的算法养距,生成Signature字符串诉探。
使用服務器生成的Signature字符串與用戶提供的字符串進行比對,如果內(nèi)容不一致棍厌,則認為認證失敗肾胯,拒絕該請求;如果內(nèi)容一致耘纱,則表示認證成功敬肚,系統(tǒng)將按照用戶的請求內(nèi)容進行操作。
原理:
客戶端:
1. 構(gòu)建http請求(包含 access key)束析;
2. 使用請求內(nèi)容和 使用secret access key計算的簽名(signature)艳馒;
3. 發(fā)送請求到服務端。
服務端:
1. 根據(jù)發(fā)送的access key 查找數(shù)據(jù)庫得到對應的secret-key员寇;
2. 使用同樣的算法將請求內(nèi)容和 secret-key一起計算簽名(signature)弄慰,與客戶端步驟2相同;
3. 對比用戶發(fā)送的簽名和服務端計算的簽名蝶锋,兩者相同則認證通過陆爽,否則失敗。