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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

单点登录的原理与CAS技术的研究

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

1.什么是單點(diǎn)登錄?

關(guān)于單點(diǎn)登錄技術(shù)的說明參考文章:http://www.cnblogs.com/yupeng/archive/2012/05/24/2517317.html

一般來說,整個(gè)原理大家都比較認(rèn)可。下一步需要關(guān)注的是使用什么技術(shù)來實(shí)現(xiàn)單點(diǎn)登陸。

2.選擇什么技術(shù)實(shí)現(xiàn)單點(diǎn)登錄?

經(jīng)過比較最終選擇使用CAS:http://www.oschina.net/p/ja-sig+cas

3.CAS技術(shù)研究

3.1CAS下載

???? CAS分為Server端和client端:

???? 官網(wǎng)地址:https://www.apereo.org/cas

???? Server端的下載地址:https://www.apereo.org/cas/download

???? Client端的下載地址:http://downloads.jasig.org/cas-clients/

????? 至于版本選擇:Server端選擇4.0,Client選擇最新版本3.3.3

3.2 CAS服務(wù)器安裝

????? 現(xiàn)在把Server端和Client端的包下載完成之后,開始進(jìn)行Server端的服務(wù)器搭建。

???? 1.準(zhǔn)備工作

???????? 1.在你的安裝環(huán)境中安裝tomcat(jdk就不說了肯定要提前裝好的)。

???????? 2.在環(huán)境變量中設(shè)置Path=path;%JAVAHOME%/bin,保證能夠運(yùn)行keytool命令,后面要用到。

?????? 3.為了簡單測試,在cmd命令窗口中進(jìn)入tomcat目錄。

??? 2.創(chuàng)建密鑰庫

使用 JDK 的 keytool 命令生成密鑰庫(keystore),其實(shí)就是一份 keystore 文件,keystore 必須通過密碼才能訪問。

keystore 里包含了多個(gè)密鑰對(keypair),每個(gè) keypair 都有一個(gè)別名(alias),alias 必須保證唯一性,而且都有一個(gè)密碼,有此可知,keystore 與 keypair 都有自己的密碼。

JDK 也有自己的 keystore,位于 %JAVA_HOME%\jre\lib\security\cacerts,其密碼就是 changeit,當(dāng)然也可以通過 keytool 命令來修改。

我們首先生成 keypair 及其存放 keypair 的 keystore,然后從 keystore 里導(dǎo)出證書,最后將證書導(dǎo)入 JDK 的 keystore 里,Tomcat 在運(yùn)行時(shí)就會自動讀取 JDK 的 keystore,以確保所部署的應(yīng)用可以享受 HTTPS 協(xié)議(SSL 通道)帶來的安全性。

??? 2.1生成 keypair

參考命令

??? keytool -genkey –alias ?-keyalg RSA -keystore tomcatstore

  • -genkey 生成一個(gè)證書的密鑰
  • -alias 證書別名
  • -keyalg 指定證書的密鑰算法
  • -keystore 指定證書庫的名稱

注意:

  • 為了簡化操作,建議 keystore 與 keypair 的密碼相同,且均為 abc123。

  • 提示“您的名字與姓氏是什么?”,這里需要輸入一個(gè)域名,如果沒有域名,測試可用localhost,但是注意一定不能使用ip地址。

  • 成功之后,會在tomcat目錄中生成:

    2.2從 keystore 中導(dǎo)出證書

    參考命令:

    keytool -export -file tomcat.cer -alias tomcat -keystore teststore -storepass abc123

    可雙擊該證書文件,將該證書安裝到“受信任的根證書頒發(fā)機(jī)構(gòu)”中,這樣在瀏覽器中使用 HTTPS 協(xié)議訪問時(shí)才不會出現(xiàn)一個(gè)紅色的叉叉。

    完成命令之后會在tomcat目錄中生成:


    2.3 導(dǎo)入證書到 JVM 中

    參考命令:

    keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file tomcat.cer -alias tomat -storepass changeit

    ?

    默認(rèn)情況下,Tomcat 將讀取 JVM 中的密鑰庫,而不是用戶目錄下的 .keystore 密鑰庫,當(dāng)然也可以配置 Tomcat 使其讀取指定的密鑰庫。

    3使 Tomcat 支持 HTTPS

    ? 1.這里把剛才生成的keystore文件(teststore)復(fù)制到%CATALINA_HOME%\conf目錄下

    ? 2.修改server.conf文件

    <Connector SSLEnabled="true" clientAuth="false" keystoreFile="teststore" keystorePass="abc123" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/>

    注意事項(xiàng):
    ????? 1.原有的8080端口的connector不變,需要被注釋掉的8443端口變成可用,然后在其基礎(chǔ)上修改。

    2.protocol不能是“HTTP/1.1”

    5 運(yùn)行 CAS 服務(wù)器

    啟動tomcat,在瀏覽器中輸入:

    https://localhost:8443/cas-server-webapp-4.0.0

    ?

    4.0版的默認(rèn)用戶名密碼是:casuser/Mellon,輸入之后:

    退出:

    ?

    3.3CAS服務(wù)器深入配置

    上面的初體驗(yàn)僅僅是簡單的身份驗(yàn)證,實(shí)際應(yīng)用中肯定是要讀取數(shù)據(jù)庫的數(shù)據(jù),下面我們來進(jìn)一步配置CAS服務(wù)器怎么讀取數(shù)據(jù)庫的信息進(jìn)行身份驗(yàn)證。 首先打開

    tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml注釋掉:?在后面添加:?

    修改authenticationManager中的配置【dbAuthHandler】部分:

    在apache-tomcat-7.0.54\webapps\cas-server-webapp-4.0.0\WEB-INF\lib中添加jar包:

    ? 1.cas-server-support-jdbc-4.0.0.jar

    ? 2.c3p0-0.9.1.2.jar

    ? 3.ojdbc6-11.2.0.3.jar

    ? 此時(shí)可以連接oracle進(jìn)行密碼驗(yàn)證了。

    ?

    注意:

    ?? 1.使用了MD5驗(yàn)證,也就是數(shù)據(jù)庫中存儲MD5加密后的密碼。

    ?? 2.dataSource使用c3p0的配置。

    ?? 3.主要要建好對應(yīng)的表結(jié)構(gòu)。

    ?

    3.3CAS客戶端配置

    新建一個(gè)普通的web工程,其中:

    ? 1.在Client工程WEB-INF/lib下添加cas-client-core-3.3.3.jar包,注意把其他的依賴包全部加上。

    ? 2.修改web.xml

    <!-- ======================== 單點(diǎn)登錄/登出 ======================== --><!-- 該過濾器用于實(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><!-- 該過濾器負(fù)責(zé)用戶的認(rèn)證工作,必須啟用它 --><filter><filter-name>CAS Authentication Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>https://localhost:8443/cas-server-webapp-4.0.0/login</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://localhost:8080</param-value></init-param></filter><!-- 該過濾器負(fù)責(zé)對Ticket的校驗(yàn)工作,必須啟用它 --><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>https://localhost:8443/cas-server-webapp-4.0.0</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://localhost:8080</param-value></init-param><init-param><param-name>redirectAfterValidation</param-name><param-value>true</param-value></init-param></filter><!-- 該過濾器負(fù)責(zé)實(shí)現(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><!-- 該過濾器使得開發(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 Single Sign Out Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Authentication Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Assertion Thread Local Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!-- ======================== 單點(diǎn)登錄/登出結(jié)束 ======================== -->

    注意:

    ? 1.4.0的配置跟老版本的不一致。

    ? 2.server中的地址最好使用域名,如果沒有域名,可以使用localhost。

    ?

    輸入:localhost:8080/firstclient,轉(zhuǎn)向到驗(yàn)證頁面。

    ?

    ?

    輸入用戶名,密碼之后,進(jìn)入firstclient的頁面。

    ?

    按照相同的配置配置secondclient,在firstclient登錄之后,直接輸入:localhost:8080/secondclient,不需要登錄可以直接進(jìn)入:

    ?

    參考文檔:

    http://www.kafeitu.me/sso/2010/11/05/sso-cas-full-course.html

    http://my.oschina.net/huangyong/blog/198109

    http://my.oschina.net/aiguozhe/blog/160934

    http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/

    http://blog.csdn.net/kissliux/article/details/17674443

    http://alexwangjie.iteye.com/blog/2117552

    http://blog.csdn.net/xuke6677/article/details/38845671?

    轉(zhuǎn)載于:https://www.cnblogs.com/sdjnzqr/p/4065653.html

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

    總結(jié)

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

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