日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CAS服务下单点登录(服务端与客户端)

發(fā)布時間:2024/4/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAS服务下单点登录(服务端与客户端) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自:http://www.open-open.com/lib/view/open1359286846414.html

此文的目的是為了加深自己的理解,做一個備份與分享

過程全為自己的實際操作步驟

第一步:準備的環(huán)境

win7 64位的系統(tǒng)

jdk1.6.0_37

apache-tomcat-6.0.14

cas-server-3.4.8-release

cas-client-3.2.0-release

這里用到的是tomcat自帶作為測試的程序

?

首先,找到系統(tǒng)的hosts文件( C:\Windows\System32\drivers\etc\hosts?)增加

?

在本機映射三個域名

127.0.0.1 ? cas.baishi.com

127.0.0.1 ? app1.baishi.com

127.0.0.1 ? app2.baishi.com

解釋,其中,cas.baishi.com對應部署cas server的tomcat ,這個域名對應證書的生成

app1.baishi.com對應部署app1應用的tomcat

app2.baishi.com對應部署app2應用的tomcat

第二步:部署cas的服務

(1)首先,我在D盤下建一個文件夾,如D:/baishikeys 接著用jdk自帶的keytool生成證書,即在cmd命令中鍵入

keytool -genkey -alias baishi -keyalg RSA -keystore “D:/baishikeys/baishikey” 該命令生成keys證書

baishi為證書的別名,執(zhí)行結果如下圖,注意其中姓氏要寫之前cas server對應的域名
(2)導出證書

keytool -export -file d:/baishikeys/baishi.crt -alias baishi -keystore d:/baishikeys/baishikey

執(zhí)行結果如圖(其中密碼和上面證書密碼一致)



(3)把證書導入JDK中

先找到你安裝的jdk目錄中cacerts文件刪掉,如D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts

這樣的目的是避免后面報錯

執(zhí)行keytool -import -keystore "D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts" -file D:/baishikeys/baishi.crt -alias baishi

執(zhí)行結果如圖(其中密碼和上面一致就行)

第三步:配置cas的服務端

解壓apache-tomcat-6.0.14重命名為apache-tomcat-cas

把下載的cas-server-3.4.8-release包解壓,在文件modules中,找到cas-server-webapps-3.4.8.war

復制到apache-tomcat-cas的webapps文件夾下,重命名為?cas.war,打開apache-tomcat-cas的

conf/server.xml文件,

找到64到72中間的注釋打開,改為

?<Connector?port="8443"?protocol="HTTP/1.1"?SSLEnabled="true"

???????????????maxThreads="150"?scheme="https"?secure="true"

???????????????clientAuth="false"?sslProtocol="TLS"?

? ? ? ? ? ? ? keystoreFile="D:/baishikeys/baishikey"

? ? ? ? ? ? ??keystorePass="123456"

???/>

其中keystoreFile是創(chuàng)建證書的路徑,keystorePass是創(chuàng)建證書的密碼,到此cas服務的配置完成

?

啟動cas服務的apache-tomcat-cas,訪問https://cas.baishi.com:8443/cas

執(zhí)行圖:點擊繼續(xù)瀏覽此網(wǎng)站

執(zhí)行后圖

用戶名和密碼輸入相同的字符串就可以通過了

到此cas服務端的配置成功了

第四步:配置cas的客戶端

(1)?安裝配置 apache-tomcat-app1

解壓apache-tomcat-6.0.14?.tar,改名為apache-tomcat-app1對應應用app1的服務

修改apache-tomcat-app1的啟動端口,在文件conf/server.xml文件找到如下內(nèi)容:

?

<Connector?port="8080"?protocol="HTTP/1.1"
????????????????connectionTimeout="20000"
????????????????redirectPort="8443"?/>
?<Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>

改成

?

<Connector?port="18080"?protocol="HTTP/1.1"
???????????????connectionTimeout="20000"
???????????????redirectPort="18443"?/>
4 <Connector?port="18009"?protocol="AJP/1.3"?redirectPort="18443"?/>


為了避免多個tomcat沖突,把<Server port="8005" shutdown="SHUTDOWN">也改成 <Server port="8085" shutdown="SHUTDOWN">

啟動apache-tomcat-app1 ,瀏覽器輸入 http://app 1 .baishi.com: 1 8080/examples/servlets/ 回車:

則tomcat配置成功

接下來復制 client的lib包cas-client-core-3.2.0.jarapache-tomcat-app1\webapps\examples\WEB-INF\lib\目錄下, 在apache-tomcat-app1\webapps\examples\WEB-INF\web.xml?文件中增加如下內(nèi)容:

<!-- ======================== 單點登錄開始 ======================== -->
?????????<!-- 用于單點退出,該過濾器用于實現(xiàn)單點登出功能,可選配置-->
?????????<listener>
?

? ? ??

<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

????????</listener>
??
?????????<!-- 該過濾器用于實現(xiàn)單點登出功能,可選配置 -->
?????????<filter>
?????????????<filter-name>CAS Single Sign Out Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Single Sign Out Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<filter>
?????????????<filter-name>CAS Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
?????????????<init-param>
?????????????????<param-name>casServerLoginUrl</param-name>
?????????????????<param-value>https://cas.baishi.com:8443/cas/login</param-value>
?????????????</init-param>
?????????????<init-param>
?????????????????<param-name>serverName</param-name>
?????????????????<param-value>http://app1.baishi.com:18080</param-value>
????????????</init-param>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
?????????<!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->
?????????<filter>
?????????????<filter-name>CAS Validation Filter</filter-name>
?????????????<filter-class>
?????????????????org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
?????????????<init-param>
?????????????????<param-name>casServerUrlPrefix</param-name>
?????????????????<param-value>https://cas.baishi.com:8443/cas</param-value>
?????????????</init-param>
????????????<init-param>
?????????????????<param-name>serverName</param-name>
?????????????????<param-value>http://app1.baishi.com:18080</param-value>
????????????</init-param>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Validation Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<!--
?????????????該過濾器負責實現(xiàn)HttpServletRequest請求的包裹,
?????????????比如允許開發(fā)者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。
?????????-->
?????????<filter>
????????????<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
?????????????<filter-class>
?????????????????org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????<!--
?????????該過濾器使得開發(fā)者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。
?????????比如AssertionHolder.getAssertion().getPrincipal().getName()。
?????????-->
?????????<filter>
?????????????<filter-name>CAS Assertion Thread Local Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Assertion Thread Local Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<!-- ======================== 單點登錄結束 ======================== -->

?

?

(2)?安裝配置?apache-tomcat-app2

解壓apache-tomcat-6.0.14?.tar,改名為apache-tomcat-app2對應應用app2的服務

修改apache-tomcat-app2的啟動端口,在文件conf/server.xml文件找到如下內(nèi)容:

<Connector?port="8080"?protocol="HTTP/1.1"
????????????????connectionTimeout="20000"
????????????????redirectPort="8443"?/>
?<Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>

改成

?

<Connector?port="28080"?protocol="HTTP/1.1"
???????????????connectionTimeout="20000"
???????????????redirectPort="28443"?/>
4 <Connector?port="28009"?protocol="AJP/1.3"?redirectPort="28443"?/>


為了避免多個tomcat沖突,把<Server port="8005" shutdown="SHUTDOWN">也改成<Server port="8095" shutdown="SHUTDOWN">

啟動apache-tomcat-app2 ,瀏覽器輸入 http://app 2 .baishi.com: 2 8080/examples/servlets/ 回車:

按照上述(1)中的方法驗證是否成功。

?

接下來復制 client的lib包cas-client-core-3.2.0.jar到?apache-tomcat-app2\webapps\examples\WEB-INF\lib\目錄下, 在apache-tomcat-app2\webapps\examples\WEB-INF\web.xml?文件中增加如下內(nèi)容:

<!-- ======================== 單點登錄開始 ======================== -->
?????????<!-- 用于單點退出,該過濾器用于實現(xiàn)單點登出功能,可選配置-->
?????????<listener>
?

? ? ??

<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

????????</listener>
??
?????????<!-- 該過濾器用于實現(xiàn)單點登出功能,可選配置 -->
?????????<filter>
?????????????<filter-name>CAS Single Sign Out Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Single Sign Out Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<filter>
?????????????<filter-name>CAS Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
?????????????<init-param>
?????????????????<param-name>casServerLoginUrl</param-name>
?????????????????<param-value>https://cas.baishi.com:8443/cas/login</param-value>
?????????????</init-param>
?????????????<init-param>
?????????????????<param-name>serverName</param-name>
?????????????????<param-value>http://app2.baishi.com:18080</param-value>
????????????</init-param>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
?????????<!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->
?????????<filter>
?????????????<filter-name>CAS Validation Filter</filter-name>
?????????????<filter-class>
?????????????????org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
?????????????<init-param>
?????????????????<param-name>casServerUrlPrefix</param-name>
?????????????????<param-value>https://cas.baishi.com:8443/cas</param-value>
?????????????</init-param>
????????????<init-param>
?????????????????<param-name>serverName</param-name>
?????????????????<param-value>http://app2.baishi.com:18080</param-value>
????????????</init-param>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Validation Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<!--
?????????????該過濾器負責實現(xiàn)HttpServletRequest請求的包裹,
?????????????比如允許開發(fā)者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。
?????????-->
?????????<filter>
????????????<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
?????????????<filter-class>
?????????????????org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????<!--
?????????該過濾器使得開發(fā)者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。
?????????比如AssertionHolder.getAssertion().getPrincipal().getName()。
?????????-->
?????????<filter>
?????????????<filter-name>CAS Assertion Thread Local Filter</filter-name>
?????????????<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
?????????</filter>
?????????<filter-mapping>
?????????????<filter-name>CAS Assertion Thread Local Filter</filter-name>
?????????????<url-pattern>/*</url-pattern>
?????????</filter-mapping>
??
?????????<!-- ======================== 單點登錄結束 ======================== -->



第五步:測試

啟動之前配置好的三個tomcat分別為:apache-tomcat-casapache-tomcat-app1apache-tomcat-app2.

打開瀏覽器地址欄中輸入:http://app1.baishi.com:18080/examples/servlets/servlet/HelloWorldExample

輸入賬戶和密碼之后會出現(xiàn)Hello World

之瀏覽器地址中輸入http://app2.baishi.com:28080/examples/servlets/servlet/HelloWorldExample

就不用輸入賬戶和密碼了,直接進入Hello World

最后地址欄中輸入:https://cas.baishi.com:8443/cas/logout會注銷這個流程,重新開始認證

以上就是整個cas單點登錄的簡單配置

?

如果有cas服務的tomcat報錯java.lang.Exception:?Connector?attribute?SSLCertificateFile?must?be?defined?when?using?SSL?with?APR

只需把

?<Connector?port="8443"?protocol="HTTP/1.1"?SSLEnabled="true"

???????????????maxThreads="150"?scheme="https"?secure="true"

???????????????clientAuth="false"?sslProtocol="TLS"?

? ? ? ? ? ? ? keystoreFile="D:/baishikeys/baishikey"

? ? ? ? ? ? ??keystorePass="123456"

???/>

改成

?

?<Connector?port="8443"?protocol="org.apache.coyote.http11.Http11Protocol"?SSLEnabled="true"

???????????????maxThreads="150"?scheme="https"?secure="true"

???????????????clientAuth="false"?sslProtocol="TLS"?

? ? ? ? ? ? ? keystoreFile="D:/baishikeys/baishikey"

? ? ? ? ? ? ??keystorePass="123456"

???/>

即可

轉載于:https://www.cnblogs.com/summer520/p/3595809.html

總結

以上是生活随笔為你收集整理的CAS服务下单点登录(服务端与客户端)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。