單token機(jī)制
認(rèn)證機(jī)制:對(duì)與單token的認(rèn)證機(jī)制在我們項(xiàng)目中僅使用一個(gè)Access Token的訪問令牌進(jìn)行用戶身份認(rèn)證和授權(quán)的方案處理。
不足之處:
- 安全性較低(因?yàn)橹挥幸粋€(gè)token在客戶端和服務(wù)器端之間進(jìn)行傳遞,一目Acess Token被截獲或者被泄露,攻擊者就會(huì)在有效時(shí)間內(nèi)完成模擬用戶行為,訪問所有受保護(hù)資源)
- 短有效期策略限制無法撒銷會(huì)話(為了提高安全性access token通常設(shè)置的時(shí)間是比較短的,然而需要頻繁的去獲取access token.影響的是用戶的體驗(yàn),尤其是長時(shí)間操作或者是后臺(tái)的服務(wù)場(chǎng)景下就會(huì)遇到一個(gè)瓶矜,而且也無法撤銷對(duì)應(yīng)的匯報(bào),如果某個(gè)token被盜用了,難以立即撤銷這個(gè)token的有效性,從而不能立即中斷攻擊者的訪問權(quán)限)
- 無代態(tài)刷新問題(若要自動(dòng)去刷新token維持長期的繪畫,單token的機(jī)制需要將刷新的邏輯耦合到具體的業(yè)務(wù)流程當(dāng)中,這就會(huì)增加復(fù)雜性和潛在的安全風(fēng)險(xiǎn))
- 沒有權(quán)限細(xì)分管理(單一的access token包含所有的授權(quán)信息,不易于對(duì)不同范文或者是力度的一個(gè)資源進(jìn)行精細(xì)化的訪問控制)
雙Token機(jī)制
操作機(jī)制:雙Token主要包含了AccessToken (訪問令牌) 和 RefreshToken (刷新令牌),它的出現(xiàn)就是為了解決單token的不足,所以才會(huì)引入雙token的機(jī)制也就是 RefreshToken (刷新令牌),因?yàn)樗梢匝娱L實(shí)際的繪畫時(shí)間,用戶提供了一種安全的方式來去更新AccessToken,并且在必要的時(shí)候撤銷特定用戶的權(quán)限,而并不會(huì)影響有效的繪畫內(nèi)容。
實(shí)時(shí)上雙token的機(jī)制是 o os 2.0標(biāo)準(zhǔn)中常見的一種實(shí)現(xiàn),主要包含兩個(gè)類型的token,一個(gè)是AccessToken (訪問令牌) ,一個(gè)是RefreshToken (刷新令牌)
AccessToken (訪問令牌):它會(huì)設(shè)置一個(gè)有效時(shí)間較短的令牌內(nèi)容,用于的是用戶每次請(qǐng)求受保護(hù)資源時(shí),進(jìn)行身份驗(yàn)證的操作,通常直接包含在api請(qǐng)求頭或者是URL地址參數(shù)之中,用于證明客戶端其實(shí)是有權(quán)限去訪問特定的資源的
RefreshToken (刷新令牌):刷新令牌,會(huì)設(shè)置一個(gè)有效時(shí)間比較長并且安全存儲(chǔ)比較高的一個(gè)令牌,主要用于AccessToken過期了以后,去重新獲取AccessToken的操作內(nèi)容。我們并不需要用戶去提供一個(gè)特殊的登錄憑證。因?yàn)镽efreshToken 一般不會(huì)頻繁的在網(wǎng)絡(luò)上進(jìn)行傳輸,目的就是為了降低被截取的一個(gè)風(fēng)險(xiǎn)
雙token有很多優(yōu)勢(shì):
- 安全性提升(因?yàn)锳ccessToken和RefreshToken其實(shí)是會(huì)被分離的,即使AccessToken被盜用了,但是由于有效時(shí)間是比較短的,損失還是可以控制的,同時(shí)RefreshToken的安全性則會(huì)變的更高,一般還不暴露在網(wǎng)絡(luò)的傳輸過程當(dāng)中,攻擊者其實(shí)很難竊取到AccessToken長期的有效訪問權(quán)限)
- 用戶體驗(yàn)優(yōu)化(RefreshToken可以實(shí)現(xiàn)無感知的token刷新,也就是我們所說的無感刷新,因?yàn)楫?dāng)AccessToken失效的時(shí)候,客戶端就會(huì)自動(dòng)去刷新AccessToken,利用的就是RefreshToken,用戶并不需要進(jìn)行一個(gè)重新的登錄,從而保證操作的連貫性)
- 權(quán)限控制靈活(而且雙token機(jī)制還有很好的權(quán)限控制靈活性,可以通過控制RefreshToken的有效期,刷新次數(shù)等方式來靈活的管理用戶的繪畫生命周期,并且在必要的時(shí)候去撤銷RefreshToken的內(nèi)容從而終止后續(xù)所以AccessToken的一個(gè)訪問生成)
雙token流程
用戶登錄(主要是用戶通過用戶名或者是用戶碼或者其他憑證向服務(wù)器去進(jìn)行訪問)---->?
驗(yàn)證通過?(驗(yàn)證我們的一個(gè)身份,然后服務(wù)器,將會(huì)設(shè)置一個(gè)請(qǐng)求授權(quán))---->
頒發(fā)Access Token & Refresh Token(當(dāng)認(rèn)證成功了以后,頒發(fā)兩個(gè)內(nèi)容,一個(gè)是Access Token 另一個(gè) Refresh Token,Access Token是一個(gè)短期的token(比如幾十分鐘),Refresh Token是一個(gè)長期的token(比如可以設(shè)置幾天或者更長的時(shí)間),這兩個(gè)token都會(huì)返回客戶端)----->
客戶端存儲(chǔ)tokens(并且客戶端會(huì)進(jìn)行對(duì)應(yīng)的存儲(chǔ))--->
客戶端使用Access Token訪問受保護(hù)資源(查看Access Token是否已經(jīng)有過期的風(fēng)險(xiǎn),當(dāng)Access Token即將或者已經(jīng)過期了后,客戶端用Refresh Token向服務(wù)器發(fā)送一個(gè)新的請(qǐng)求,獲取新的Access Token,服務(wù)器驗(yàn)證Refresh Token有效,如Refresh Token有效就會(huì)頒發(fā)一個(gè)新的Access Token,當(dāng)然在此過程中有兩種不同的情況,一種是并不會(huì)刷新Refresh Token還有一種在申請(qǐng)Access Token的時(shí)候還可能會(huì)重新生成Refresh Token,那么這兩個(gè)token的有效期時(shí)間會(huì)從當(dāng)前的時(shí)間段往回深延,具體的選擇需要根據(jù)實(shí)際的業(yè)務(wù)情況進(jìn)行策略的抉擇)--->
客戶端更新存儲(chǔ)的tokens(客戶端接收到新的Access Token以后則需要替換原來的Access Token,并且在新訪問的時(shí)候則使用新的token進(jìn)行一個(gè)訪問)
應(yīng)用場(chǎng)景:
實(shí)時(shí)上雙token我們可以應(yīng)用到,單點(diǎn)登錄,移動(dòng)應(yīng)用或者是web網(wǎng)站應(yīng)用當(dāng)中,或者是第三方授權(quán)操作處理等文章來源:http://www.zghlxwxcb.cn/news/detail-800488.html
注意事項(xiàng):
Refresh Token安全的存儲(chǔ),需要去確定客戶端確保Refresh Token在本地實(shí)現(xiàn)更為安全的存儲(chǔ)操作,需要去避免被泄露,被篡改,而且對(duì)應(yīng)Refresh Token需要去實(shí)時(shí)更為合理的生命周期管理和失效的策略,包括并且不限于我們響應(yīng)的倒退時(shí)間還得去考慮何時(shí)更新或者是廢除Refresh Token,我們需要考慮并發(fā)的處理,防止同一個(gè)Refresh Token在同一時(shí)刻被多次刷新Access Token,目的就是為了防止我們的攻擊行為,那么當(dāng)用戶進(jìn)行系統(tǒng)退出的時(shí)候,注銷的不光是Access Token還得將Refresh Token也進(jìn)行一個(gè)一統(tǒng)刪除,確保用戶在進(jìn)行后續(xù)操作的時(shí)候無法在獲得最新的一個(gè)授權(quán),那么對(duì)于訪問的限制,Refresh Token相關(guān)接口應(yīng)該收到一個(gè)嚴(yán)格的控制,僅限于可性的客戶端才能進(jìn)行對(duì)應(yīng)的訪問處理文章來源地址http://www.zghlxwxcb.cn/news/detail-800488.html
到了這里,關(guān)于為什么使用雙token實(shí)現(xiàn)無感刷新用戶認(rèn)證?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!