SpringMVC + Shiro重定向次數過多問題

post200發表於2021-09-09

企業級系統,內部服務數較多,單點登入簡稱(SSO)是系統不斷增多必須要面臨的一個問題.

SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。

今天在弄單點登入,用的是CAS。許可權控制使用的是shiro,shiro有個shiro-cas子模組可以與CAS進行整合。

CAS原理

圖片描述

image.png

  • CAS服務端:主要用於對CAS客戶端進行認證和授權,實現方式為發放和驗證ticket來實現。

  • CAS客戶端:一般是可以透過支援的協議(例如,CAS,SAML,OAuth)與服務端進行通訊的客戶端,可以是某些軟體包,也可以是具體的應用。在企業系統中一般為一個個的服務。

具體可參考官網

具體錯誤

說一下今天遇到的具體問題,感覺自己腦袋反應不靈活啊,我用的Spring Boot整合Shiro與CAS,在配置Shiro相關的Bean的時候。
因為要自定義一些過濾器,ShiroFilter中可以設定自己的Filter,當設定自己的Filter的時候,預設的Filter會被覆蓋掉。

我自定義的Filter都配置成了Spring的Bean,並且把Shiro的LogoutFilter也配置成了Bean
Spring Boot預設載入所有的Filter Bean並且在請求的時候都會生效,這樣就導致每次請求LogoutFilter都會生效,然後每次的登入資訊都被清除,清除登入資訊之後,其它的認證相關Filter也繼續起作用,並且執行登入方法,登入失敗重定向到登入頁面,登入頁面也會呼叫LogoutFilter,總之就是一直重定向了。

知識點

今天的錯誤就是對Spring的知識點理解不夠透徹導致的,Spring中配置的所有Filter Bean預設都會生效。

最後

一個小問題,把自己的問題記錄下來,省的以後別人問自己遇到過什麼問題嗎?然後自己連個問題都說不出來。

參考

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2816284/,如需轉載,請註明出處,否則將追究法律責任。

相關文章