




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、CAS單點登錄(SSO)完整教程作者: 咖啡兔 日期: 2010年11月5日 發(fā)表評論 (59) 查看評論 一、教程前言1. 教程目的:從頭到尾細細道來單點登錄服務器及客戶端應用的每個步驟2. 單點登錄(SSO):請看百科解釋猛擊這里打開3. 本教程使用的SSO服務器是Yelu大學研發(fā)的CAS(Central Authentication Server),官網(wǎng):/cas4. 本教程環(huán)境: o Tomcat6.0.29o JDK6o CAS Server版本:cas-server-o CAS Client版本:cas-client-3.1.12
2、o 教程撰寫日期:2010-11-05o 教程作者:咖啡兔二、創(chuàng)建證書啰嗦幾句:證書是單點登錄認證系統(tǒng)中很重要的一把鑰匙,客戶端于服務器的交互安全靠的就是證書;本教程由于是演示所以就自己用JDK自帶的keytool工具生成證書;如果以后真正在產(chǎn)品環(huán)境中使用肯定要去證書提供商去購買,證書認證一般都是由VeriSign認證,中文官方網(wǎng)站:1. 用JDK自帶的keytool工具生成證書:命令:keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey無圖不給力,有圖有真相:用keytool生成證書具體的輸入項圖片中都有說明,
3、有一點我要解釋一下;在輸入完密碼后提示輸入域名是我輸入的是,其實這個域名是不存在的,但是我為了演示所以虛擬了這個域名,技巧在于修改C:WindowsSystem32driversetchosts,添加內(nèi)容如下: 這樣在訪問的時候其實是訪問的也就是本機嚴重提醒:提示輸入域名的時候不能輸入IP地址三、導出證書命令:D:keys>keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey來點顏色:使用keytool導出證書至此導出證書完成,可以分發(fā)給應用的J
4、DK使用了,接下來講解客戶端的JVM怎么導入證書 四、為客戶端的JVM導入證書命令:keytool -import -keystore D:toolsjdk1.6jdk1.6.0_20jrelibsecuritycacerts -file D:/keys/wsria.crt -alias wsria來點顏色瞧瞧:為客戶端JVM導入證書特別說明:D:toolsjdk1.6jdk1.6.0_20jrelibsecurity 是jre的目錄;密碼還是剛剛輸入的密碼。至此證書的創(chuàng)建、導出、導入到客戶端JVM都已完成,下面開始使用證書到Web服務器中,本教程使用tomcat。 五、應用證書到Web服務器
5、-Tomcat說是應用起始做的事情就是啟用Web服務器(Tomcat)的SSL,也就是HTTPS加密協(xié)議,為什么加密我就不用啰嗦了吧準備好一個干凈的tomcat,本教程使用的apache-tomcat-6.0.29打開tomcat目錄的conf/server.xml文件,開啟83和87行的注釋代碼,并設置keystoreFile、keystorePass修改結果如下:<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150&
6、quot; scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:/keys/wsriakey" keystorePass=""/>參數(shù)說明:· keystoreFile:在第一步創(chuàng)建的key存放位置· keystorePass:創(chuàng)建證書時的密碼好了,到此Tomcat的SSL啟用完成,現(xiàn)在你可以啟動tomcat試一下了,例如本教程輸入地址::
7、8443/打開的是:瀏覽器提示證書錯誤好的,那么我們點擊“繼續(xù)瀏覽此網(wǎng)站(不推薦)。 ”,現(xiàn)在進入Tomcat目錄了吧,如果是那么你又向成功邁進了一步。OK,接下來要配置CAS服務器了。 六、CAS服務器初體驗1. CAS服務端下載:/cas/download2. 下載完成后將cas-server-.zip解壓,解壓cas-server-3.4.3/modules/cas-server-webapp-.war,改名為cas,然后復制cas目錄到你的tomcat/webapp目錄下3. 現(xiàn)在可以訪問CAS應用了,當然要使用HTTP
8、S加密協(xié)議訪問,例如本教程地址::8443/cas/login ,現(xiàn)在打開了CAS服務器的頁面輸入admin/admin點擊登錄(CAS默認的驗證規(guī)則只要用戶名和密碼相同就通過)所以如果你看到下面的這張圖片你就成功了CAS登錄成功你成功了嗎?如果沒有成功請再檢查以上步驟! 七、CAS服務器深入配置上面的初體驗僅僅是簡單的身份驗證,實際應用中肯定是要讀取數(shù)據(jù)庫的數(shù)據(jù),下面我們來進一步配置CAS服務器怎么讀取數(shù)據(jù)庫的信息進行身份驗證。首先打開tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml文件,配置的地方如下:1. 找到第92行處,注釋掉:Si
9、mpleTestUsernamePasswordAuthenticationHandler這個驗證Handler,這個是比較簡單的,只是判斷用戶名和密碼相同即可通過,這個肯定不能在實際應用中使用,棄用!2. 注釋掉92行后在下面添加下面的代碼: 3. <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">4. <property name="dataSource" ref="dataSource" />5. &l
10、t;property name="sql" value="select password from t_admin_user where login_name=?" />6. <property name="passwordEncoder" ref="MD5PasswordEncoder"/></bean>在文件的末尾之前加入如下代碼:<bean id="dataSource" class="org.springframework.jdbc.data
11、source.DriverManagerDataSource"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <property name="url"><value>jdbc:mysql:/wsriademo</value></property> <property name="username">
12、;<value>root</value></property> <property name="password"><value>root</value></property></bean> <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-
13、arg index="0"><value>MD5</value></constructor-arg></bean>7. 復制cas-server-modulescas-server-support-jdbc-.jar和mysql驅(qū)動jar包到tomcat/webapp/cas/WEB-INF/lib目錄8. 配置解釋: o QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查詢接口其中一個,QueryDatabaseAut
14、henticationHandler是通過配置一個 SQL 語句查出密碼,與所給密碼匹配o dataSource我就不用解釋了吧,就是使用JDBC查詢時的數(shù)據(jù)源o sql語句就是查詢哪一張表,本例根據(jù)t_admin_user表的login_name字段查詢密碼,CAS會匹配用戶輸入的密碼,如果匹配則通過;下面是t_admin_user的表結構: o CREATE TABLE t_admin_user (o id BIGINT NOT NULL AUTO_INCREMENT,o email VARCHAR(255),o login_name VARCHAR(255) NOT NULL UNIQU
15、E,o name VARCHAR(255),o password VARCHAR(255),o PRIMARY KEY (id) ENGINE=InnoDB;o passwordEncoder,這個就算是自己加的鹽巴了,意思很明顯就是處理密碼的加密,看你的應用中數(shù)據(jù)庫保存的是明碼還是加密過的,比如本例是使用MD5加密的,所以配置了MD5PasswordEncoder這個Handler,cas內(nèi)置了MD5的功能所以只需要配置一下就可以了;如果在實際應用中使用的是公司自己的加密算法那么就需要自己寫一個Handler來處理密碼,實現(xiàn)方式也比較簡單,創(chuàng)建一個類繼承org.jasig.cas.authe
16、ntication.handler.PasswordEncoder然后在encode方法中加密用戶輸入的密碼然后返回即可八、配置CAS客戶端1. 添加cas-client的jar包,有兩種方式: o 傳統(tǒng)型:下載cas-client,地址:/downloads/cas-clients/,然后解壓cas-client-3.1.12.zip,在modules文件夾中有需要的jar包,請根據(jù)自己的項目情況選擇使用o Maven型: o <!- cas ->o <dependency>o <groupId>org.jasig.
17、cas.client</groupId>o <artifactId>cas-client-core</artifactId>o <version>3.1.12</version></dependency>2. 設置filter先上配置信息: 3. <!- 用于單點退出,該過濾器用于實現(xiàn)單點登出功能,可選配置->4. <listener>5. <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListe
18、ner</listener-class>6. </listener>7. 8. <!- 該過濾器用于實現(xiàn)單點登出功能,可選配置。 ->9. <filter>10. <filter-name>CAS Single Sign Out Filter</filter-name>11. <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>12. </filter>13. <fil
19、ter-mapping>14. <filter-name>CAS Single Sign Out Filter</filter-name>15. <url-pattern>/*</url-pattern>16. </filter-mapping>17. 18. <!- 該過濾器負責用戶的認證工作,必須啟用它 ->19. <filter>20. <filter-name>CASFilter</filter-name>21. <filter-class>org.
20、jasig.cas.client.authentication.AuthenticationFilter</filter-class>22. <init-param>23. <param-name>casServerLoginUrl</param-name>24. <param-value>:8443/cas/login</param-value>25. <!-這里的server是服務端的IP->26. </init-param>27. <init-param>28. <param
21、-name>serverName</param-name>29. <param-value>http:/localhost:10000</param-value>30. </init-param>31. </filter>32. <filter-mapping>33. <filter-name>CASFilter</filter-name>34. <url-pattern>/*</url-pattern>35. </filter-mapping>36.
22、160;37. <!- 該過濾器負責對Ticket的校驗工作,必須啟用它 ->38. <filter>39. <filter-name>CAS Validation Filter</filter-name>40. <filter-class>41. org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>42. <init-param>43. <param-name>casServ
23、erUrlPrefix</param-name>44. <param-value>:8443/cas</param-value>45. </init-param>46. <init-param>47. <param-name>serverName</param-name>48. <param-value>http:/localhost:10000</param-value>49. </init-param>50. </filter>51. <filter-m
24、apping>52. <filter-name>CAS Validation Filter</filter-name>53. <url-pattern>/*</url-pattern>54. </filter-mapping>55. 56. <!-57. 該過濾器負責實現(xiàn)HttpServletRequest請求的包裹,58. 比如允許開發(fā)者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。59. ->60. <filter>61.
25、 <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>62. <filter-class>63. org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>64. </filter>65. <filter-mapping>66. <filter-name>CAS HttpServletRequest Wrapper Filter</filter-
26、name>67. <url-pattern>/*</url-pattern>68. </filter-mapping>69. 70. <!-71. 該過濾器使得開發(fā)者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。72. 比如AssertionHolder.getAssertion().getPrincipal().getName()。73. ->74. <filter>75. <filter-name>CAS Assertion Thread
27、 Local Filter</filter-name>76. <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>77. </filter>78. <filter-mapping>79. <filter-name>CAS Assertion Thread Local Filter</filter-name>80. <url-pattern>/*</url-pattern>81.
28、</filter-mapping>82. 83. <!- 自動根據(jù)單點登錄的結果設置本系統(tǒng)的用戶信息 ->84. <filter>85. <display-name>AutoSetUserAdapterFilter</display-name>86. <filter-name>AutoSetUserAdapterFilter</filter-name>87. <filter-class>com.wsria.demo.filter.AutoSetUserAdapterFilter</
29、filter-class>88. </filter>89. <filter-mapping>90. <filter-name>AutoSetUserAdapterFilter</filter-name>91. <url-pattern>/*</url-pattern>92. </filter-mapping><!- = 單點登錄結束 = ->每個Filter的功能我就不多說了,都有注釋的,關鍵要解釋一下AutoSetUserAdapterFilter的作用和原理.查看完整的web.xml請猛擊這里(Google code) 93. 利用AutoSetUserAdapterFilter自動根據(jù)CAS信息設置Session的用戶信息:先看一下這個
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度直播平臺主播培訓及管理合同
- 2025年度新能源汽車產(chǎn)業(yè)投資合作合同
- 二零二五年度商標共營協(xié)議及跨國品牌合作合同
- 二零二五年度超市商品陳列與文化氛圍營造合同
- 2025年度民宿租賃合同終止及服務質(zhì)量協(xié)議
- 二零二五年度集體合同簽訂與新型學徒制實施
- 二零二五年度個人對個人科技成果轉化借款合同
- 2025年度機關炊事員食品安全培訓聘用協(xié)議
- 日常行政管理事務處理指導書
- 日化用品行業(yè)供應鏈優(yōu)化與市場拓展策略研究計劃
- 小學語文中高年級單元整體教學設計的實踐研究(中期報告)
- JTT791-2010 公路涵洞通道用波紋鋼管(板)
- 山東省春季高考技能考試-汽車專業(yè)必刷必練題庫(600題)
- 2024年黑龍江農(nóng)墾科技職業(yè)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- THHPA 001-2024 盆底康復管理質(zhì)量評價指標體系
- 人民音樂家 教案-2023-2024學年高中人音版(2019)必修《音樂鑒賞》
- 《合理調(diào)節(jié)情緒-做自己情緒的主人》班會課件
- 20222023學年山西省朔州市朔城區(qū)七年級(下)期末語文試卷(解析)
- 國家義務教育質(zhì)量監(jiān)測心理健康和德育測試題
- 農(nóng)民橡膠割膠技術培訓方案
- 新編物理基礎學(下冊)(9-17章)課后習題(每題都有)詳細答案
評論
0/150
提交評論