1、Springboot集成Shiro和CAS,移步博客:https://blog.csdn.net/catoop/article/details/50534006
主要是繼承CasRealm寫自己項目的realm,有條件地重寫裏面的doGetAuthenticationInfo()身份認證和doGetAuthorizationInfo()用戶授權這兩個方法。
2、一些常見問題:
(1)自定義的realm類中的doGetAuthorizationInfo()方法就是不進去執行
自定義的realm配置setAuthorizationCachingEnabled爲false:shiroCasRealm.setAuthorizationCachingEnabled(false);
同理自定義realm也可以設置setAuthenticationCachingEnabled的狀態。
(2)跳轉正常 但是未能夠識別出目標 'ST-13-2EreKS2Ea4OKRjL3Dv9u-pc-PC',ticket票根報錯 驗證不通過:
查看下Cas登錄頁面地址,當前項目地址等url地址是否正確。
(3)各種登錄地址,錯誤地址,正確跳轉地址都可以在CasFilter設置
@Bean(name = "casFilter")
public CasFilter getCasFilter() {
CasFilter casFilter = new CasFilter();
casFilter.setName("casFilter");
casFilter.setEnabled(true);
// 如果不設置默認會自動尋找Web工程根目錄下的"/login.jsp"頁面
casFilter.setLoginUrl(BasicApi.LOGIN_URL);
// 登錄成功後跳轉地址
casFilter.setSuccessUrl("http://lwj.gzhtoa.cn:8888/pk/index.html");
// 登錄失敗後跳轉的URL,也就是 Shiro 執行 CasRealm 的 doGetAuthenticationInfo 方法向CasServer驗證tiket
// casFilter.setFailureUrl(LOGIN_URL);// 我們選擇認證失敗後再打開登錄頁面
return casFilter;
}
(4)cas登錄頁面跳轉回我們設置的地址,出現無限重定向或者重定向次數過多導出錯誤:
檢查各種設置的url地址以及casFiltre攔截器攔截的url
(5)shiroFilter設置特定url爲anno無反應
1) filterChainDefinitionMap要用LinkedHashMap,不能使用HashMap。設置的攔截器了順序從上到下,優先級依次降低;
2)攔截的url是否正確。比如open路徑下都不用驗證,要設置filterChainDefinitionMap.put("/open/**", "anon");
設置“/open”會無效。