java SSO 之Cas 筆記
阿新 • • 發佈:2019-01-25
最近專案比較大,子系統比較多,有要使用單點登入的需求,這就使用cas serive
整合的步驟:
可以直接下載cas-server,執行起來。
步驟大概這樣:
1. 執行cas-server服務
2. 讓cas-server通過jdbc進行認證
3. 修改cas-server的登入頁面
4. 讓業務系統與cas-client整合
使用CAS實現SSO簡潔教程
單點登入的原理是通過攔截你設定的URL,並跳轉到你指定的CAS
SERVER登入頁,當你登入成功後,帶著TICKET,返回到你開啟的URL。然後你就可以一票在手,暢通無阻。
說明:cas - server :4.0.0版本 已經 以前的 3.x 版本直接提供的有
但是4之後還有5開始不提供war包,要自己用官網的工具打成war包;(maven和gradle)都支援,兩個工具
cas 5.x 開始使用spring boot 和之前完全不一樣。
相關學習:spring security 配合 cas ; shiro 配合cas;
4.x一下的常見配置: deployerConfigContext.xml; spring-configuration/ticketGrantingTicketCookieGenerator.xml
報錯:未能夠識別出目標 'ST-11-b5ol1MCscnxEXXrNxTgp-cas01.example.org'票根
請求登陸;驗證票據;登入成功;
登陸client,302重定向到serve
自己遇到的坑,cas client 和 cas 伺服器都配置好了,但是 不同系統之間還是不能同時登入和退出,結果,錯誤原因是:
http://www.baidu.com 和 http://baidu.com 是不一樣的;
cas 3.0/4.0學習:
1:預設賬戶密碼 cas/cas ,賬號和密碼相同,處理類SimpleTestUsernamePasswordAuthenticationHandler
2:
<!--dazer 段大志 去掉原始的驗證登入的處理器-->
<bean
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
<!--dazer start -->
<bean id="testAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>
<bean id="databaseAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"/>
<property name="sql" value="select ac.password from account_info ai,account_credential ac where ai.username=? and ai.id=ac.account_id"/>
<property name="passwordEncoder" ref="md5PasswordEncoder"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
<property name="url"><value>jdbc:oracle:thin:@121.196.194.52:1521:orcl</value></property>
<property name="username"><value>CBL_OA</value></property>
<property name="password"><value>W1Q2W3E4R5T88cbl</value></property>
</bean>
<bean id="md5PasswordEncoder" class="demo.CustomPasswordEncoder"/>
<!--dazer end -->
詳細見截圖: