CAS示例環(huán)境部署及配置(完整版)_第1頁
CAS示例環(huán)境部署及配置(完整版)_第2頁
CAS示例環(huán)境部署及配置(完整版)_第3頁
CAS示例環(huán)境部署及配置(完整版)_第4頁
CAS示例環(huán)境部署及配置(完整版)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、CAS示例環(huán)境部署及配置一、 示例說明在本示例中將使用cas-server-3.5.2和cas-client-3.2.1搭建一個SSO測試環(huán)境,部署文件清單應(yīng)用服務(wù)器中間件apache-tomcat-5.5.26(符合Servlet2.3以上標(biāo)準(zhǔn)的J2EE容器)CAS SERVER部署包cas-server-3.5.2-release.zipCAS CLIENT部署包cas-client-3.2.1-release.zip二、 準(zhǔn)備部署環(huán)境準(zhǔn)備一個apache-tomcat-5.5.26 部署 CAS 服務(wù)端創(chuàng)建一個Web項目 作為CAS服務(wù)端三、 CAS SERVER部署3.1 CAS SE

2、RVER部署解壓提取cas-server-3.5.2/modules/cas-serverwebapp -3.5.2.war文件,把此文件復(fù)制到apache-tomcat-5.5.26webapps目錄, 文件修改為cas.war即可。啟動tomcat(此tomcat的默認(rèn)監(jiān)聽端口為8090),在瀏覽器地址欄輸入::8090/cas,按回車鍵后地址欄會自動變?yōu)?8090/cas/login,并顯示如下界面:在登錄窗口中,用戶名和密碼都輸入admin(實際上可以輸入任何值,只要用戶名和密碼一致,就可以成功登錄,這個是CAS的默認(rèn)驗證規(guī)則),然后點擊登錄,會出現(xiàn)如下界面:至此,CAS SERVER

3、的應(yīng)用已經(jīng)部署成功,接下來就是根據(jù)情況進(jìn)行配置。3.2 CAS SERVER 數(shù)據(jù)庫登錄及查詢用戶信息(以SQL Server 為例)1. 添加所需的 JAR 文件 解壓提取cas-server-3.5.2/modules/ cas-server-support-jdbc-3.5.2.jar 及sqljdbc.jar ProtalHandler.jar(MD5加密JAR)2. 修改webappscasWEB-INF deployerConfigContext.xml 文件一、 在最上方添加數(shù)據(jù)源及MD5加班<bean>二、找到 authenticationHandlers 修改Si

4、mpleTestUsernamePasswordAuthenticationHandler 配置三、 需要重新配置屬性attributeRepository其中:queryAttributeMapping 是組裝sql用的查詢條件屬性,上述配置后,結(jié)合封裝成查詢sql就是 select * from hrEmployee where mail=#mail#resultAttributeMapping 是sql執(zhí)行完畢后返回的結(jié)構(gòu)屬性, key對應(yīng)數(shù)據(jù)庫字段,value對應(yīng)客戶端獲取參數(shù)。四、配置用戶認(rèn)證憑據(jù)轉(zhuǎn)化的解析器也是在 deployerConfigContext.xm

5、l 中,找到 credentialsToPrincipalResolvers,為 UsernamePasswordCredentialsToPrincipalResolver 注入 attributeRepository,那么 attributeRepository 就會被觸發(fā)并通過此類進(jìn)行解析。 五、找到 org.jasig.cas.services.InMemoryServiceRegistryDaoImpl 為其 添加屬性 registeredServices修改 registeredServices  列表中的每個協(xié)議中的 a

6、llowedAttributes 屬性的值,列出的每個值,在客戶端就可以訪問了到次服務(wù)端配置完畢。四、 CAS客戶端的部署及配置4.1 客戶端應(yīng)用的部署按照常規(guī)方式部署使用CAS作為單點登錄服務(wù)器的應(yīng)用,并測試此應(yīng)用是否能正常訪問,我們使用的是一個測試應(yīng)用,只有一個jsp頁面,如果顯示正常的頁面即表示應(yīng)用部署成功,我的測試應(yīng)用顯示如下信息:4.2 復(fù)制CAS CLIENT需要的JAR文件復(fù)制CAS核心文件和其所依賴的JAR包 cas-client-core-3.2.1.jar4.3 配置web.xml文件有關(guān)cas-client的web.xml修改的詳細(xì)說明見官網(wǎng)介紹:https:/wiki.

7、/display/CASC/Configuring+the+JA-SIG+CAS+Client+for+Java+in+the+web.xml我們這里只介紹將會用到的最簡單的配置,將如下內(nèi)容復(fù)制到web.xml中,需要注意的是SingleSignOutFilter的映射一定要寫在其他過濾器的最前面,至少是過濾器CAS Authentication Filter的前面,然后根據(jù)實際情況修改參數(shù)即可,如下所示突出顯示的部分:<!- = 單點登錄開始 = -><!- 用于單點退出,該過濾器用于實現(xiàn)單點登出功能,可選配置 -><listener>&

8、lt;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.SingleSignOutFilt

9、er</filter-class></filter><filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!- 該過濾器負(fù)責(zé)用戶的認(rèn)證工作,必須啟用它 -><filter><filter-name>CASFilter</filter-name><filter-class&

10、gt;org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>http:/localhost:8080/cas/login</param-value><!-這里的server是服務(wù)端的IP -></init-param><init-param><param-name

11、>serverName</param-name><param-value>http:/localhost:8090</param-value></init-param></filter><filter-mapping><filter-name>CASFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!- 該過濾器負(fù)責(zé)對Ticket的校驗工作,必須啟用它 -><

12、;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>http:/localhost:8080/ca

13、s</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http:/localhost:8090</param-value> </init-param><!- 設(shè)置傳值的編碼方式 -><init-param> <param-name>encoding</param-name> <param-value>UTF-8</

14、param-value> </init-param> </filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!- 該過濾器負(fù)責(zé)實現(xiàn)HttpServletRequest請求的包裹, 比如允許開發(fā)者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置

15、。 -><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-

16、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><fi

17、lter-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><!- = 單點登錄結(jié)束 = ->4.4 部署結(jié)果測試配置完成后,啟

18、動CAS SERVER所在的tomcat和CAS客戶端所在的tomcat,然后打開瀏覽器輸入網(wǎng)址:5090/c2,此時瀏覽器會自動進(jìn)行跳轉(zhuǎn)到CAS的登錄頁面,地址欄會顯示如下的地址::8090/cas/login?service=http%3A%2F%2F%3A5090%2Fc2%2F,同時會看到如下所示的登錄界面:在登錄窗口中,用戶名和密碼都輸入admin,然后點擊登錄,系統(tǒng)會自動跳轉(zhuǎn)到登錄之前我們要訪問的地址,出現(xiàn)如下界面:至此,一個簡單的CAS測試環(huán)境就搭建成功了。4.5 客戶端取值A(chǔ)ttributePrincipal principal = (AttributePrincipal) r

19、equest.getUserPrincipal(); String loginName = principal.getName(); out.println("loginName:" + loginName); Map<String, Object> attributes = principal.getAttributes(); out.println("<br>"); if (attributes != null) out.println("user:" + attributes.get("name

20、"); out.println("<br>"); out.println("id:" + attributes.get("id"); out.println("<br>"); out.println("mail:" + attributes.get("mail"); out.println("<br>"); 4.6 為客戶端配置注銷cas功能1:服務(wù)端:修改casWEB-INFcas-servlet.xml 查

21、詢 <bean id="logoutController"> 修改p:followServiceRedirects="$cas.logout.followServiceRedirects:false"為p:followServiceRedirects="$cas.logout.followServiceRedirects:true" 2: 客戶端:退出action 跳轉(zhuǎn)修改為<result name="success" type="redirect">http:/192.

22、168.18.231:8070/cas/logout?service=http:/localhost:8088/BJERP/login.action</result>五、 為CAS SERVER配置HTTPS5.1 獲取安全證書通??梢詮囊恍┌踩珯C(jī)構(gòu)申請安全證書,但是要支付一定的費用,在本試驗中,我們使用JDK自帶的工具keytool生成一個證書,生成證書的命令為:keytool -genkey -alias cas -keyalg RSA -keysize 1024 -validity 730 -keystore d:/temp/cas.keystore在上面的命令行中,突出顯示

23、的部分為需要修改的部分,其他參數(shù)可以默認(rèn),也可以參照keytool的參數(shù)說明進(jìn)行修改;其中參數(shù)alias指定了證書的別名,以后對證書的操作會用到此名稱,我們這里設(shè)置為cas,keystore指定了證書存在磁盤上的文件路徑,即我們需要將生成的證書存放在哪里。創(chuàng)建證書的過程如下所示,需要注意的是途中畫紅方框的地方,這個值需要與訪問cas時的域名或者cas所在的計算機(jī)名保持一致;最后一個密碼和keystore的密碼保持一致即可,密碼是casserver。5.2 配置CAS SERVER使用的TOMCAT默認(rèn)情況下,tomcat是沒有開啟https端口的,因此需要在TOMCAT/conf/server

24、.xml中進(jìn)行手動配置。首先找到如下代碼的位置:在配置文件中添加紅框中所示的代碼,其中keystoreFile為我們生成的證書文件的存放路徑,keystorePass為生成證書時輸入的密碼,本實驗中我把證書文件復(fù)制到了server.xml的目錄下。5.3 通過HTTPS訪問CAS應(yīng)用在瀏覽器中輸入:8443/cas,出現(xiàn)如下所示的界面:點擊“繼續(xù)瀏覽此網(wǎng)站”即可跳轉(zhuǎn)到我們熟悉的登錄界面,此時你會發(fā)現(xiàn),那個令人討厭的“Non-secure Connection”提示也沒有了:在登錄窗口中,用戶名和密碼都輸入admin(實際上可以輸入任何值,只要用戶名和密碼一致,就可以成功登錄,這個是CAS的默認(rèn)

25、驗證規(guī)則),然后點擊登錄,會出現(xiàn)如下界面5.4 修改CAS 客戶端的配置將CAS客戶端的web.xml中需要配置CAS SERVER URL的地方做對應(yīng)的修改,本例中,應(yīng)將過濾器CAS Authentication Filter的參數(shù)casServerLoginUrl 的值由“:8090/cas/login”修改為“:8443/cas/login”;將過濾器CAS Validation Filter的參數(shù)casServerUrlPrefix的值由“:8090/cas”修改為“:8443/cas”;修改完配置文件之后,重新啟動tomcat,訪問地址:5090/c2,瀏覽器依然會自動跳轉(zhuǎn)到登錄頁面

26、,但是當(dāng)輸入完用戶名和密碼,點擊登錄之后,就會出現(xiàn)如下的錯誤頁面:上圖對應(yīng)的錯誤信息如下:java.lang.RuntimeException: .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: vider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetorg.jasig.

27、cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:341)org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:305)org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.jav

28、a:50)org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:207)org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:169)org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(Aut

29、henticationFilter.java:116)出現(xiàn)這個錯誤的直接原因就是因為JVM沒有找到訪問時所需要的安全證書,現(xiàn)在出現(xiàn)這個錯誤是正常的,因為我們還沒有將安全證書導(dǎo)入到JVM的證書庫中,如果在以后的使用過程中出現(xiàn)這個錯誤,可以通過keytool的list命令查看JVM的證書庫中是否有對應(yīng)的證書。5.5 為運行CAS CLIENT的JVM設(shè)置安全證書CAS客戶端在驗證時,會從后臺通過代碼訪問CAS SERVER,此時是通過HTTPS進(jìn)行訪問的,因此運行CAS客戶端的JVM會在JVM的證書庫中查找與訪問的域名對應(yīng)的證書,然后使用此證書與CAS SERVER建立會話。因此我們要告訴JVM到

30、哪里獲取安全證書。有兩種方法可以達(dá)到這個目的,一個方法是在啟動TOMCAT的時候為JVM指定證書的位置和訪問密碼,另一個方法是將安全證書導(dǎo)入到JVM的默認(rèn)證書庫中。1、為JVM指定可信證書庫的位置在啟動TOMCAT的啟動參數(shù)中增加如下內(nèi)容,也可以在啟動TOMCAT之前將環(huán)境變量JAVA_OPTS設(shè)置為如下的值(需要注意的是下面兩行的內(nèi)容不要換行):-D.ssl.trustStore=D:/tomcat-for-cas/conf/cas.keystore -D.ssl.trustStorePassword=casserver有兩種方式指定JVM的啟動參數(shù),一種在tomcat/bin/catalina.bat中指定:一種是單獨建一個文件,比如start-with-key.bat,然后在文件中加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論