CAS官網 https://www.apereo.org/cas html
服務器端下載地址: https://www.apereo.org/cas/download java
客戶端下載地址:http://downloads.jasig.org/cas-clients/ web
先說一下個人環境,Server 和Client 都是在Windows下配置的,Linux應該也差很少。 spring
服務端版本:CAS Server 4.0.0 Release 客戶端版本 :cas-client-3.2.1-release.zip chrome
都是使用Tomcat配置的。 數據庫
纔開始的時候在按照百度搜索的 http://www.th7.cn/Program/java/201409/281561.shtml 配置的,因爲網絡限制訪問Server端口比較少,就把https去掉了。省去了證書的部分。修改了服務器的兩個文件,就能夠了。 瀏覽器
不採用https驗證,服務器端須要配置 修改第一處: cas/WEB-INF/deployerConfigContext.xml <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient"/> 增長參數p:requireSecure="false",是否須要安全驗證,即HTTPS,false爲不採用。修改後爲: <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" p:requireSecure="false"/> 修改第二處: cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="true" p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas" /> 參數p:cookieSecure="true",同理爲HTTPS驗證相關,TRUE爲採用HTTPS驗證,FALSE爲不採用https驗證。 參數p:cookieMaxAge="-1",簡單說是COOKIE的最大生命週期,-1爲無生命週期,即只在當前打開的IE窗口有效,IE關閉或從新打開其它窗口,仍會要求驗證。能夠根據須要修改成大於0的數字,好比3600等,意思是在3600秒內,打開任意IE窗口,都不須要驗證。 這裏把 cookieSecure修改成false就好了
感受服務器端配置沒什麼難度,配置一次就經過了,主要就是數據庫配置的時候略顯複雜了一下。 安全
並且中間換了一次Tomcat,直接拷貝webapp下的項目就能夠了,遷移仍是很是方便的。 服務器
感受難點在client,網上說的配置不是很全,饒了一個彎,最後仍是在官網的文檔中找到的解決方案。 cookie
org.jasig.cas.client.authentication.AuthenticationFilter配置中
必填參數
casServerLoginUrl - Defines the location of the CAS server login URL, i.e. https://localhost:8443/cas/login
service or serverName
service - the service URL to send to the CAS server,e.g. https://localhost:8443/yourwebapp/index.html
serverName - the server name of the server this application is hosted on. Service URL will be dynamically constructed using this, i.e.https://localhost:8443 (you must include the protocol, but port is optional if it's a standard port).
service和serverName兩個參數二選其一,剛剛開始的時候我填寫的http://localhost:8088,後來發現該頁面是登陸頁面,用戶須要再登陸一下,而後本身編寫了根據用戶名登陸的頁面,userLogin.jsp。
而後將serverName配置成http://localhost:8088/userLogin.jsp,可是發現登陸以後提示404,這是chrome提示的錯誤,而IE瀏覽器直接就是卡在SSO的登陸頁面,坑人。。
而後仔細查看地址發現單點登陸成功以後跳轉的地址爲:http://localhost:8088/userLogin.jsp/,與正確的地址多了一個斜線,百度了一下,發現有一個noFilter的參數,在web.xml文件中配置該參數以後不生效,依舊不生效,沒辦法了,看源碼,查過源碼以後肯定確實沒有改參數,這個應該是舊版本的問題,最後只能求助官網的文檔了,發現不光能夠配置serverName,還能夠將serverName替換成service,按照官方的文檔將serverName換成service,值仍是原來的值,一切就OK了。