分清Spring security和CAS的職責
CAS職責
單點認證(自己YY的名詞,懂就行):在CAS Server認證後,各Client都認
對不起,沒其他的了,其他都是Spring security乾的事情!
Spring security職責
認證各個請求,認證不過,就去做身份認證
此處佔兩個灰常灰常重要的坑:
坑1:怎麼認證請求,判斷請求的人有沒有驗證過,有沒有通行證(角色涉及的權限暫不表)
坑2:怎麼認證身份,來者是誰,驗明正身後給發通行證。
保存、銷燬用戶信息,並提供查詢方式;
配置:
配置Spring security
配置特定的servlet filter,配置位置:web.xml
1
2
3
4
5
6
7
8
9
配置CAS的認證機制
對應上述坑1。配置地址:spring security的配置文件,例如spring-security.xml什麼的
何時開始認證?指定CAS的認證時機
1
2
3
4
5
說明:spring security採用filterchain來處理request,它定義了一套處理點,詳見官方文檔:spring security reference。另,偷偷加入了logout的處理,道理是類似的。
用什麼認證?定義CAS的Filter
class="org.springframework.security.cas.web.CasAuthenticationFilter">
1
2
3
4
5
6
7
如何認證?定義認證的Provider
按照spring security的玩法,實際做認證邏輯的是authenticationProvider,即此處的casAuthenticationProvider:
class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
參數說明
保存認證信息的類,沒錯,必須實現某個spring security定義好的接口,它就是UserDetailsService
票據認證,也就是產生了票據,我怎麼認證票據是否是正確的呢,此處插入了CAS的認證類。
服務屬性,存點信息,和我們處理相關的信息
CAS認證所需配置信息
ServiceProperties處放CAS的各種雜七雜八的配置。
class="org.springframework.security.cas.ServiceProperties">
1
2
3
4
5
參數說明
service 這玩意就是CAS Service認證完用戶名、密碼後回來訪問CAS Client的地址;
sendRenew 網上看到某美女程序員說是要不要每次請求都認證一把,當時我就信了。
小結
到此已經填完了坑1,開始填坑2,即跑去驗明正身。
配置用戶名&密碼認證點
spring security說去AuthenticationEntryPoint處驗證。CAS提供實現了該接口的類。
在配置CAS認證時機的時候,其實已經配置了,回顧下
1
2
class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">
1
2
3
4
5
參數說明
loginUrl 指定CAS Server上登錄認證地址,ip:port/cas/login
serviceProperties 同上
總結
至此,兩個坑填完,配置也就基本配完了。還剩餘spring security的角色什麼的,放在spring securtiy的總結篇再折騰。
總結final
認證總體框架是spring security的,我們只需要給spring security的幾個坑填上CAS的機制而已。
總結final2
C轉JAVA,剛開始慢慢看看Spring各大框架,框架重不重咱以後總結,設計思想是值得學習的。
閱讀更多 程序員小新人學習 的文章