Shiro+SessionId構(gòu)建token鑒權(quán)體系

背景

隨著社會(huì)的發(fā)展,現(xiàn)在前端展示的方式多樣,由原本網(wǎng)頁(yè)單一形式,到現(xiàn)在的網(wǎng)頁(yè)、小程序、Android、IOS等多元化模式。由于前端展示的多元化,原有采用session有狀態(tài)的認(rèn)證方式已經(jīng)無(wú)法滿足需求,所以需要調(diào)整后臺(tái)的技術(shù)框架,讓系統(tǒng)能滿足有狀態(tài)認(rèn)證和無(wú)狀態(tài)token認(rèn)證并存。

方案

后臺(tái)的管理系統(tǒng)是采用碼云上開源的renren-security系統(tǒng),該系統(tǒng)采用的認(rèn)證框架是Shiro??紤]系統(tǒng)采用原本的權(quán)限控制采用Session方式,整體風(fēng)險(xiǎn)大且時(shí)間周期長(zhǎng),所以整合考慮采用SessionId作為token的方式,進(jìn)行無(wú)狀態(tài)的token認(rèn)證方式。
登錄時(shí),POST用戶名與密碼到/login進(jìn)行登入,如果成功返回一個(gè)會(huì)話ID,以會(huì)話ID作為token,失敗的話直接返回401錯(cuò)誤。之后用戶訪問每一個(gè)需要權(quán)限的網(wǎng)址請(qǐng)求必須在header中添加Authorization字段,例如Authorization: token,token為密鑰。后臺(tái)會(huì)進(jìn)行token的校驗(yàn),如果有誤會(huì)直接返回401。

Token驗(yàn)證

在login方法驗(yàn)證通過后,以SessionId作為token,通過json返回客戶端。

Token校驗(yàn)流程

重寫Sessionmanager的getSessionId方法,獲取token作為SessionId,同時(shí)修改request的“REFERENCED_SESSION_ID”為token,因?yàn)閠oken為驗(yàn)證通過的sessionId,所以此request也會(huì)采用驗(yàn)證通過的Session進(jìn)行獲取驗(yàn)證和權(quán)限。

流程

準(zhǔn)備Maven文件

新建一個(gè)Maven工程,添加相關(guān)的依賴。

實(shí)現(xiàn)Realm

編寫認(rèn)證方法和授權(quán)方法。

重寫SessionManager

重寫繼承DefaultWebSessionManager的SessionManager,修改getSessionId方法,通過獲取的token作為SessionId。

配置Shiro

配置Realm和SessionManager,還有關(guān)于路徑的攔截等配置。

整體配置可以參考:https://blog.csdn.net/qq_34996727/article/details/81133729
SessionManager可以參考:https://blog.csdn.net/u011456867/article/details/80484559

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 構(gòu)建一個(gè)互聯(lián)網(wǎng)應(yīng)用,權(quán)限校驗(yàn)管理是很重要的安全措施,這其中主要包含: 認(rèn)證 - 用戶身份識(shí)別,即登錄 授權(quán) - 訪...
    zhuke閱讀 3,630評(píng)論 0 30
  • title: Shiro整合Web項(xiàng)目及整合后的開發(fā)tags: shirocategories: shiro 將S...
    codingXiaxw閱讀 3,700評(píng)論 3 24
  • 最近新做的項(xiàng)目中使用了shiro和jwt來做簡(jiǎn)單的權(quán)限驗(yàn)證,在和springboot集成的過程中碰到了不少坑。做完...
    空擋閱讀 100,424評(píng)論 42 242
  • 感覺有些累,腦袋懵懵,心口悶悶。 我可能要一輩子自己一個(gè)人走下去了,我有點(diǎn)煩兩個(gè)人一起的尬點(diǎn),喜歡獨(dú)處的自由自在和...
    皮蛋嚕嚕醬閱讀 320評(píng)論 0 0
  • 3月31日 三月的最后一天 很普通的一天 不同尋常的一天 這一天以后 一年只剩下四分之三 春天也過了大半 這一天 ...
    雨如花飛閱讀 284評(píng)論 0 5

友情鏈接更多精彩內(nèi)容