CAS+Spring security實現單點登錄之配置篇

分清Spring security和CAS的職責

CAS職責

單點認證(自己YY的名詞,懂就行):在CAS Server認證後,各Client都認

對不起,沒其他的了,其他都是Spring security乾的事情!

Spring security職責

認證各個請求,認證不過,就去做身份認證

此處佔兩個灰常灰常重要的坑:

坑1:怎麼認證請求,判斷請求的人有沒有驗證過,有沒有通行證(角色涉及的權限暫不表)

坑2:怎麼認證身份,來者是誰,驗明正身後給發通行證。

保存、銷燬用戶信息,並提供查詢方式;

配置:

配置Spring security

配置特定的servlet filter,配置位置:web.xml

springSecurityFilterChain

org.springframework.web.filter.DelegatingFilterProxy

springSecurityFilterChain

/*

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各大框架,框架重不重咱以後總結,設計思想是值得學習的。

CAS+Spring security實現單點登錄之配置篇


分享到:


相關文章: