用户密码和cookie,session、token还有AKSK
背景:認(rèn)證、授權(quán)、鑒權(quán)和權(quán)限控制:
https://segmentfault.com/a/1190000013258488
認(rèn)證、授權(quán)、鑒權(quán)和權(quán)限控制 | 灘之南
單點(diǎn)登錄的通用架構(gòu)實(shí)現(xiàn) | 灘之南
https://segmentfault.com/a/1190000013010835
基于JWT的token身份認(rèn)證方案 - 開拖拉機(jī)的蠟筆小新 - 博客園
用戶名密碼
- 用戶輸入賬號(hào)、密碼提交給服務(wù)端認(rèn)證
存在一個(gè)問題,萬(wàn)一被泄漏了,就只能改密碼或者用戶名了,而且還必須銷戶。那么我們很自然得想到我們需要給用戶賬號(hào)密碼認(rèn)證加密或者是設(shè)置有效期。用戶名密碼還好,如果應(yīng)用間訪問間隔一段時(shí)間就要換密碼是很痛苦的。而加密呢就涉及到了解密,安全的加密算法,解密一般來說會(huì)有性能損耗。(cookie和session都是基于用戶名密碼)
當(dāng)然這里涉及到cookie和seesion還有單點(diǎn)登錄的方案可以看上文鏈接
計(jì)算機(jī)的很多問題:加一個(gè)中間層就可以解決了,如果不行,那就多加幾層
Token認(rèn)證
我們能不能先用賬號(hào)密碼訪問一個(gè)中間層然后從中間層取個(gè)帶有效時(shí)間的對(duì)象呢,后續(xù)有效期內(nèi),我就使用這個(gè)對(duì)象來進(jìn)行訪問應(yīng)用。這就是token也叫令牌。
但是如果報(bào)文在中途被劫持,那么token就泄露了,這時(shí)(token有效期內(nèi))黑客就可以構(gòu)造任意的請(qǐng)求了,這時(shí)候我們就又想既然能加時(shí)間,我們是不是可以加更多的內(nèi)容進(jìn)去,比如你能調(diào)哪個(gè)api?但是如果每個(gè)api都這樣搞,那么你需要保存多少token呢?換一個(gè)思路用加密,每次請(qǐng)求都要解密,性能上的損耗可能是我們無(wú)法接受的。
那么其實(shí)在微服務(wù)架構(gòu)下,一般會(huì)有微服務(wù)網(wǎng)關(guān),我們可能把這層鑒權(quán)和token生成放在網(wǎng)關(guān)嗎?
當(dāng)然可以。于是jwt應(yīng)運(yùn)而生:基于JWT的token身份認(rèn)證方案 - 開拖拉機(jī)的蠟筆小新 - 博客園
aksk(Access Key Id / Secret Access Key)
AK/SK使用機(jī)制
公有云下絕大多數(shù)使用assk機(jī)制來進(jìn)行認(rèn)證鑒權(quán)
云主機(jī)接收到用戶的請(qǐng)求后,系統(tǒng)將使用AK對(duì)應(yīng)的相同的SK和同樣的認(rèn)證機(jī)制生成認(rèn)證字符串,并與用戶請(qǐng)求中包含的認(rèn)證字符串進(jìn)行比對(duì)。如果認(rèn)證字符串相同,系統(tǒng)認(rèn)為用戶擁有指定的操作權(quán)限,并執(zhí)行相關(guān)操作;如果認(rèn)證字符串不同,系統(tǒng)將忽略該操作并返回錯(cuò)誤碼。
1.3 流程
判斷用戶請(qǐng)求中是否包含Authorization認(rèn)證字符串。如果包含認(rèn)證字符串,則執(zhí)行下一步操作。
基于HTTP請(qǐng)求信息,使用相同的算法,生成Signature字符串。
使用服務(wù)器生成的Signature字符串與用戶提供的字符串進(jìn)行比對(duì),如果內(nèi)容不一致,則認(rèn)為認(rèn)證失敗,拒絕該請(qǐng)求;如果內(nèi)容一致,則表示認(rèn)證成功,系統(tǒng)將按照用戶的請(qǐng)求內(nèi)容進(jìn)行操作。
原理:
客戶端:
1. 構(gòu)建http請(qǐng)求(包含 access key);
2. 使用請(qǐng)求內(nèi)容和 使用secret access key計(jì)算的簽名(signature);
3. 發(fā)送請(qǐng)求到服務(wù)端。
服務(wù)端:
1. 根據(jù)發(fā)送的access key 查找數(shù)據(jù)庫(kù)得到對(duì)應(yīng)的secret-key;
2. 使用同樣的算法將請(qǐng)求內(nèi)容和 secret-key一起計(jì)算簽名(signature),與客戶端步驟2相同;
3. 對(duì)比用戶發(fā)送的簽名和服務(wù)端計(jì)算的簽名,兩者相同則認(rèn)證通過,否則失敗。
?
總結(jié)
以上是生活随笔為你收集整理的用户密码和cookie,session、token还有AKSK的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的收藏网址:
- 下一篇: 机器学习(二)监督学习