如何為你的網(wǎng)站設(shè)計(jì)一個(gè)安全的web API訪問?
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
當(dāng)我們向用戶開放web API訪問時(shí),我們需要確保每個(gè)API調(diào)用都是經(jīng)過身份驗(yàn)證的,這意味著用戶必須是他們聲稱的那個(gè)人。
在這篇文章中,我們將探討兩種常見的方法:
1、基于Token(令牌)的身份驗(yàn)證
2、基于HMAC(哈希消息認(rèn)證碼)的身份驗(yàn)證
下面的圖表說明了它們的工作原理:
1、基于Token(令牌):
第1步:用戶向客戶端輸入密碼,客戶端將密碼發(fā)送給認(rèn)證服務(wù)器。
第2步:身份驗(yàn)證服務(wù)器驗(yàn)證憑據(jù)并生成一個(gè)有過期時(shí)間的令牌。
第3步和第4步:現(xiàn)在客戶端可以發(fā)送請(qǐng)求來訪問HTTP頭中的令牌服務(wù)器資源,此訪問在令牌過期前有效。
2、基于HMAC(哈希消息認(rèn)證碼):
該機(jī)制通過哈希函數(shù)(SHA256或MD5)生成消息認(rèn)證碼(簽名)。
步驟1和步驟2:服務(wù)器生成兩個(gè)密鑰,一個(gè)是Public APP ID(公鑰),另一個(gè)是API key(私鑰)。
步驟3:我們現(xiàn)在在客戶端生成一個(gè)HMAC簽名(HMAC a),這個(gè)簽名是用圖表中列出的一組屬性生成的。
步驟4:客戶端使用HTTP頭中的hmac A發(fā)送訪問服務(wù)器資源的請(qǐng)求。
步驟5:服務(wù)器接收包含請(qǐng)求數(shù)據(jù)和認(rèn)證頭的請(qǐng)求,它從請(qǐng)求中提取必要的屬性,并使用存儲(chǔ)在服務(wù)器端的API密鑰來生成簽名(hmac b)。
步驟6和7:服務(wù)器端比較hmac A(在客戶端生成)和hmac B(在服務(wù)器端生成),如果匹配,則將請(qǐng)求的資源返回給客戶端。
問題思考:
HMAC認(rèn)證如何確保數(shù)據(jù)完整性?
為什么我們?cè)贖MAC簽名生成中包含“請(qǐng)求時(shí)間戳”? 該文章在 2022/8/10 12:40:35 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |