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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CAS实现单点登录方案(SSO完整版)

發(fā)布時(shí)間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAS实现单点登录方案(SSO完整版) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、簡(jiǎn)介

?? ? ? ? ? ? ? ?1、cas是由耶魯大學(xué)研發(fā)的單點(diǎn)登錄服務(wù)器

?? ? ? ? ? ? ? ? 2、本教材所用環(huán)境

  • Tomcat7.2
  • JDK1.7
  • CAS Service 版本 ? ?cas-server-3.4.8-release
  • CAS Client版本 ? ? ?cas-client-3.2.1-release?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

二、生成證書(shū)

??? 證書(shū)對(duì)于實(shí)現(xiàn)此單點(diǎn)登錄非常之重要,證書(shū)是服務(wù)器端和客戶(hù)端安全通信的憑證,本教程只是演示,所以用了JDK自帶的證書(shū)生成工具keytool。當(dāng)然在實(shí)際項(xiàng)目中你可以到專(zhuān)門(mén)的證書(shū)認(rèn)證中心購(gòu)買(mǎi)證書(shū)。

中文官方網(wǎng)站:http://www.verisign.com/cn/

1、用JDK自帶的keytool生成證書(shū)

keytool -genkey -alias  smalllove -keyalg RSA -keystore D:/keys/smallkey

此命令是生成一個(gè)證書(shū),其中 smalllove 是證書(shū)別名

此命令的執(zhí)行如圖所示:

其中名字與姓氏這一最好寫(xiě)你的 域名,如果在單擊測(cè)試你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一個(gè)虛擬域名, 注意不要寫(xiě)IP。

2、導(dǎo)出證書(shū)

C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey

如圖:

密碼為上步設(shè)置的密碼。

3、把證書(shū)導(dǎo)入到客戶(hù)端JDK中

假設(shè)你的jdk安裝在C:\jdk1.5這個(gè)目錄, 開(kāi)始 >> 運(yùn)行 >> 輸入cmd 進(jìn)入dos命令行 >> 再用cd進(jìn)入到C:\jdk1.5\jre\lib\security這個(gè)目錄下

敲入如下命令回車(chē)執(zhí)行:

keytool -import -alias smalllove -keystore smalllove -file D:/keys/small.crt -trustcacerts 此時(shí)命令行會(huì)提示你輸入cacerts證書(shū)庫(kù)的密碼,你敲入changeit就行了,這是java中cacerts證書(shū)庫(kù)的默認(rèn)密碼,你自已也可以修改的。 ok,大功告成!

到此證書(shū)導(dǎo)入成功。

三、配置服務(wù)端

1、 下載CAS的服務(wù)端,解壓,把解壓后的文件中modules文件夾中的cas-server-webapp-3.4.8.war文件拷貝到%TOMCAT_HOME%\webapps下,并修改文件名為:cas.war。

源碼下載地址:https://github.com/Jasig/cas/releases

CSDN全部下載地址:http://download.csdn.net/detail/zhu_r_d/5487373#comment

百度網(wǎng)盤(pán)下載:http://pan.baidu.com/s/1hrswn1U

2、修改%TOMCAT_HOME%\conf\server.xml文件,去掉此文件83到93行之間的注釋,修改為:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="D:/keys/smallkey" <!--在2.1中生成的證書(shū)的位置-->keystorePass="smalllove"/> <!--在2.1中設(shè)置的密碼-->

3、以上配置完成訪問(wèn)https://yourhost:8443/cas出現(xiàn)一下頁(yè)面

點(diǎn)擊繼續(xù)瀏覽會(huì)出現(xiàn)

輸入用戶(hù)名admin和密碼admin登錄則會(huì)出現(xiàn)

登錄成功。至此,說(shuō)明服務(wù)端配置成功。

? 四、配置客戶(hù)端

1、添加客戶(hù)端到你的項(xiàng)目中

手動(dòng)下載下載cas-client,地址:http://downloads.jasig.org/cas-clients/,然后解壓cas-client-3.1.12.zip,在modules文件夾中有需要的jar包, ? ? ? ? ? ? ? ? ? ? ? ? 請(qǐng)根據(jù)自己的項(xiàng)目情況選擇使用,把相應(yīng)的jar包放到你項(xiàng)目WEB-INF/lib下。

使用maven

?

<!-- cas --> <dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.1.12</version> </dependency>

2、在客戶(hù)端項(xiàng)目的web.xml配置過(guò)濾器

<!-- ======================== 單點(diǎn)登錄開(kāi)始 ======================== --><!-- 用于單點(diǎn)退出,該過(guò)濾器用于實(shí)現(xiàn)單點(diǎn)登出功能,可選配置 --><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!-- 該過(guò)濾器用于實(shí)現(xiàn)單點(diǎ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><!-- 該過(guò)濾器負(fù)責(zé)用戶(hù)的認(rèn)證工作,必須啟用它 --><filter><filter-name>CASFilter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><!-- CAS服務(wù)器端登錄地址 --><param-name>casServerLoginUrl</param-name><param-value>https://uic.sinopec.com:443/cas/login</param-value><!--這里的server是服務(wù)端的IP --></init-param><init-param><!-- 客戶(hù)端應(yīng)用URL --><param-name>serverName</param-name><param-value>http://client.sinopec.com:8080</param-value></init-param></filter><filter-mapping><filter-name>CASFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 該過(guò)濾器負(fù)責(zé)對(duì)Ticket的校驗(yàn)工作,必須啟用它 --><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><!-- CAS服務(wù)器端URL --><param-name>casServerUrlPrefix</param-name><param-value>https://uic.sinopec.com:443/cas</param-value></init-param><init-param><!-- 客戶(hù)端應(yīng)用URL --><param-name>serverName</param-name><param-value>http://client.sinopec.com:8080</param-value></init-param></filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 該過(guò)濾器負(fù)責(zé)實(shí)現(xiàn)HttpServletRequest請(qǐng)求的包裹, 比如允許開(kāi)發(fā)者通過(guò)HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶(hù)的登錄名,可選配置。 --><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><!-- 該過(guò)濾器使得開(kāi)發(fā)者可以通過(guò)org.jasig.cas.client.util.AssertionHolder來(lái)獲取用戶(hù)的登錄名。 比如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><!-- ======================== 單點(diǎn)登錄結(jié)束 ======================== -->

五、常見(jiàn)問(wèn)題說(shuō)明

錯(cuò)誤一、

若出現(xiàn)以上錯(cuò)原因是:你在客戶(hù)端的web.xml中①,②的配置有誤。

錯(cuò)誤二、

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

?若出現(xiàn)次錯(cuò)誤是有與你客戶(hù)端的證書(shū)有問(wèn)題。重新導(dǎo)入你證書(shū)。

?在代碼里面忽略證書(shū)問(wèn)題的解決方案請(qǐng)參考我的博文:

http://www.cnblogs.com/longshiyVip/p/5067489.html

總結(jié)

以上是生活随笔為你收集整理的CAS实现单点登录方案(SSO完整版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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