CAS Server 單點登入SSO 認證服務搭建部署
部署環境
1 下載CAS Server 4.0 :https://github.com/apereo/cas/releases/tag/v4.0.0
這裡選擇4.0是因為其有官方release版本的cas-server-webapp-4.0.0.war。其他版本需要下載原始碼手動打包。
2 JDK 1.8.111 。注意環境變數配置:JAVA_HOME是指向哪個jdk路徑,因為CAS Server是war包,用tomcat啟動,tomcat通過JAVA_HOME尋找JDK。
3 TomCat 7.0.92 win64 。測試用過TomCat 8.5 出現404,cas-server配置完禁用https後,訪問
安裝cas-server
下載CAS Server 4.0 :https://github.com/apereo/cas/releases/tag/v4.0.0 。解壓縮下載下來的“cas-server-4.0.0-release.zip”
在“modules”資料夾中找到“cas-server-webapp-4.0.0.war”,將其重新命名為“cas.war”,在將“cas.war”拷貝到TomCat 7.0.92的“\webapps”資料夾下。稍等一會兒重新整理一下,就會看到Tomcat自動將“cas.war”解壓到“cas”資料夾中
CAS禁用HTTPS,設定Cookie過期時間
若安全級別不高,不需要證書,可以選擇禁用https啟用http訪問。
cas-server是基於spring開發的,其配置為spring-bean配置檔案
在上一步解壓“cas”資料夾中修改:
1.WEB-INF/deployerConfigContext.xml中增加引數 p:requireSecure="false" ,是否需要安全驗證,即 HTTPS,false 為不採用 如下:< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
2. WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml中將p:cookieSecure="true"修改為 p:cookieSecure="false" 禁用https。p:cookieMaxAge 為過期時間,-1為瀏覽器關閉後失效。
3. WEB-INF/spring-configuration/warnCookieGenerator.xml中將p:cookieSecure="true"改為 p:cookieSecure="false" 禁用https。p:cookieMaxAge 為過期時間,-1為瀏覽器關閉後失效。
啟動tomcat測試
win環境下雙擊TomCat 7.0.92\bin\startup.bat,Tomcat預設是8080埠,訪問http://localhost:8080/cas/login,正常情況是CAS的官方登入頁面。
若修改Tomcat的埠,必須要改CAS伺服器的配置\WEB-INF\cas.properties的server.name
請手動輸入賬號與密碼,預設賬號:casuser,密碼:Mellon; 如果使用者名稱與密碼相同,系統也顯示登入成功;
圖中Non-secure提醒因為禁用了HTTPS
使用startup.bat啟動tomcat,可以檢視cas-server的控制檯資訊。
https://blog.csdn.net/shanchahua123456/article/details/85570647
控制檯資訊:
測試環境是通過NGINX(:80)代理localhost:8787服務,localhost:8787專案配置了通用字首/b,所以其根地址為localhost:8787/b。
服務端資料來源設定
配置資料來源,讓CAS伺服器到資料庫中查詢使用者名稱密碼做登入認證。
(1)修改 cas 服務端中 web-inf 下 deployerConfigContext.xml ,新增如下配置
<!--認證密碼查詢-->
<bean id="dbAuthHandler"
class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
p:dataSource-ref="dataSource"
p:sql="select password from tb_user where username = ?"
p:passwordEncoder-ref="passwordEncoder"/>
<!--配置資料來源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/casdb?characterEncoding=utf8"
p:user="root"
p:password="root" />
<!--密碼的解碼格式-->
<!--CAS也支援已定義encoder,實現org.jasig.cas.authentication.handler.PasswordEncoder介面-->
<bean id="passwordEncoder"
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"
c:encodingAlgorithm="MD5"
p:characterEncoding="UTF-8" />
然後在配置檔案開始部分找到如下配置,新增上面配置的dbAuthHandler
<bean id="authenticationManager" class="org.jasig.cas.authentication.PolicyBasedAuthenticationManager">
<constructor-arg>
<map>
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<!--新增自己配置的DB源查詢-->
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
<!--預設的primaryPrincipalResolver可以註釋掉-->
<!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver"/>-->
</map>
</constructor-arg>
<property name="authenticationPolicy">
<bean class="org.jasig.cas.authentication.AnyAuthenticationPolicy" />
</property>
</bean>
(2)將以下三個 jar 包放入 webapps\cas\WEB-INF\lib 下
cas-server-support-jdbc-4.0.0.jar(在“cas-server-4.0.0-release.zip” 的“modules”資料夾中), mysql-connector-java-5.1.32.jar,c3p0-0.9.1.2.jar
國際化
修改WEB-INF\spring-configuration\applicationContext.xml,將國際化配置檔案切換為漢語
<util:list id="basenames">
<value>classpath:custom_messages</value>
<value>classpath:messages_zh_CN</value>
</util:list>
自定義登入頁面
預設統一使用的是CAS提供的登入頁面。其路徑是Cas-Server專案下\WEB-INF\view\jsp\default\ui\casLoginView.jsp 和 \WEB-INF\view\jsp\default\ui\includes\top.jsp。
將自己的js、css、image放到Cas-Server專案主目錄的js、images、css 資料夾中。
修改:將原登入頁面的樣式/文字修改
替換:可以將自己的同名登入頁面覆蓋原頁面casLoginView.jsp,
注意替換的登入頁,要包含原登入頁的主要表單元素和引用的js,jsp等標籤