1. 程式人生 > >java SSO 之Cas 筆記

java SSO 之Cas 筆記

最近專案比較大,子系統比較多,有要使用單點登入的需求,這就使用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 官網

cas github 首頁

說明:cas - server :4.0.0版本 已經 以前的 3.x 版本直接提供的有 


但是4之後還有5開始不提供war包,要自己用官網的工具打成war包;(maven和gradle)都支援,兩個工具

cas 5.x 開始使用spring boot 和之前完全不一樣。


5.x CAS 預設密碼:casuser application.properties  中的 cas.authn.accept.users=casuser::Mellon
相關學習:spring security 配合 cas ;  shiro 配合cas;

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 -->
詳細見截圖:



http://blog.csdn.net/matthewei6/article/details/50709252