免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Yale CAS最佳實(shí)踐 --全部-SOA-Java
CAS最佳實(shí)踐 第一部分:配置篇
1.環(huán)境準(zhǔn)備
Jdk1.4.2

Tomcat5.0.28
cas-server-2.0.12(沒有采用更高版本,是因?yàn)樗詈唵蚊髁耍?
cas-client-java-2.1.1
2.在jdk上配置SSL
到http://java.sun.com/products/jsse/去下載jsse,我用的是1.0.3;下載下來后是一個(gè)zip包,把里邊lib目錄下的jar包復(fù)制到你的jdk目錄下的jre\lib\ext目錄中,是三個(gè)文件:jsse.jar;jnet.jar;jcert.jar

3.SSL驗(yàn)證證書
3.1.生成
keytool -genkey -alias tomcat -keyalg RSA
如果C:\Documents and Settings\Administrator\.keystore已經(jīng)存在,請(qǐng)先刪除。
輸入tomcat本身的缺省口令changeit
用戶前名和用戶后名都用localhost
keytool -export -alias tomcat -file server.crt
只能輸入tomcat的缺省口令changeit
keytool -import -trustcacerts -alias tomcat -file server.crt -keystore %java_home%/jre/lib/security/cacerts
3.2.顯示
keytool -list -v -keystore %java_home%/jre/lib/security/cacerts > t.txt
3.3.刪除
keytool -delete -alias tomcat -keystore %java_home%/jre/lib/security/cacerts -keypass changeit
只能輸入tomcat的缺省口令changeit
3.4.keytool參考
%JAVA_HOME%\bin\keytool -delete -alias tomcat -keypass changeit
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA
%JAVA_HOME%\bin\keytool -export -alias tomcat -keypass changeit -file %FILE_NAME%
%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit
-keystore %JAVA_HOME%/jre/lib/security/cacerts
%JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -validity 365

4.Tomcat配置
4.1.拷貝
拷貝C:\Documents and Settings\Administrator\.keystore到%tomcat_home%\conf\
4.2.配置
編輯%tomcat_home%\conf\server.xml,去掉ssl的注釋,并更改為如下配置
<Connector port="8443" keystorePass="changeit" keystoreFile="conf/.keystore"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
4.3.注意
請(qǐng)保持C:\Documents and Settings\Administrator\.keystore與%tomcat_home%\conf\.keystore一致

5.Tomcat jmx bug
在sun網(wǎng)站上http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/download.jsp
下載jmx-1_2_1-ri.zip,解壓后,把jmxri.jar重命名為jmx.jar,覆蓋tomcat/bin目錄下的jmx.jar
這個(gè)適用于cas-server-3.*

Yale CAS最佳實(shí)踐 第二部分:原理篇

6.概念術(shù)語
CAS(Central Authentication Service)
TGT(Ticket Granting Ticket)
ST(Service Ticket)
PGT(Proxy Granting Ticket)
7.原理剖析
Yale CAS使用了Ticket Granting Cookie (簡稱TGC)去作為獲取Service Ticket(簡稱ST)的憑據(jù),這個(gè)TGC 是保存在客戶端的cookie,即當(dāng)?shù)?次被其他CAS Client重定向的時(shí)候,CAS Server實(shí)際上已經(jīng)從用戶的Cookie中抓取到TGC,然后知道TGC對(duì)應(yīng)的用戶,因此避免了再次登錄,如果CAS Server抓取不到TGC,則用戶需要登陸。

眾所周知,cookie是不能跨域的。但是CAS能夠做abc.com和xyz.com的sso,因?yàn)镃AS Server緩存了所有的ticket,所以Client無需共享cookies。

Yale CAS最佳實(shí)踐 第三部分:源代碼研讀

8.源代碼研讀
8.1.web.xml參數(shù)定義:
edu.yale.its.tp.cas.client.filter.loginUrl: CAS server的login URL. (Required)
edu.yale.its.tp.cas.client.filter.validateUrl: CAS server的URL驗(yàn)證器. (Required)
edu.yale.its.tp.cas.client.filter.serviceUrl: URL of this service. (Required if serverName is not specified)
edu.yale.its.tp.cas.client.filter.serverName: 主機(jī)名:端口號(hào)
edu.yale.its.tp.cas.client.filter.authorizedProxy: 身份驗(yàn)證代理,用空格隔開.必須有一個(gè). (缺省,只接受ST,不接受PT)
edu.yale.its.tp.cas.client.filter.proxyCallbackUrl: 本地代理回調(diào)監(jiān)聽器,用來接受PGT/PGTIOU. (可選)
edu.yale.its.tp.cas.client.filter.renew: 是否重新登錄參數(shù)(缺省為false)
edu.yale.its.tp.cas.client.filter.gateway: 是否使用網(wǎng)關(guān)......雖然英文不難明白,但的確不懂到底有什么用,因而不敢斷章取義,望哪位高手能補(bǔ)充一下,在此謝過
edu.yale.its.tp.cas.client.filter.wrapRequest: 封裝了HttpServletRequest,重載了getRemoteUser()方法. 如果設(shè)置為"true", request.getRemoteUser()將返回登錄用戶名.(可選的,缺省為false.)
8.2.總體結(jié)構(gòu)圖


8.3.client源代碼研讀

8.4.server源代碼研讀

Yale CAS最佳實(shí)踐 第四部分:試試身手

1.測試類
我寫了一個(gè)RequestInfoServlet,可以顯示HttpRequest的絕大部分有用信息,經(jīng)過sso后,可以查看 HttpRequest里面還有什么東西。呵呵,我喜歡這樣干。

代碼
  1. import java.io.IOException;   
  2. import java.io.PrintWriter;   
  3. import java.util.Enumeration;   
  4.   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.http.Cookie;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10. import javax.servlet.http.HttpSession;   
  11.   
  12. /**   
  13.  * @author Liujj Date 2006-12-19 <br>  
  14.  *         Description: <br>  
  15.  *         RequestHeadersServlet   
  16.  */   
  17. public class RequestInfoServlet extends HttpServlet {   
  18.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  19.             throws IOException, ServletException {   
  20.         response.setContentType("text/html");   
  21.         PrintWriter out = response.getWriter();   
  22.         //header   
  23.         Enumeration headerNames = request.getHeaderNames();   
  24.         out.println("<B>*********[1].begin print headerNames************</B><p>");   
  25.         while (headerNames.hasMoreElements()) {   
  26.             String name = (String) headerNames.nextElement();   
  27.             String value = request.getHeader(name);   
  28.             out.println(name + " = " + value + "<p>");   
  29.         }   
  30.         out.println("<B>*********[1].end print headerNames************</B><p><p>");   
  31.            
  32.         //attributeNames   
  33.         out.println("<B>*********[2].begin print attributeNames************</B><p>");   
  34.         Enumeration attributeNames = request.getAttributeNames();   
  35.         while (attributeNames.hasMoreElements()) {   
  36.             String name = (String) attributeNames.nextElement();   
  37.             String value = (String)request.getAttribute(name);   
  38.             out.println(name + " = " + value + "<p>");   
  39.         }   
  40.         out.println("<B>*********[2].end print attributeNames************</B><p><p>");   
  41.            
  42.         //parameterNames   
  43.         out.println("<B>*********[3].begin print parameterNames************</B><p>");   
  44.         Enumeration parameterNames = request.getParameterNames();   
  45.         while (parameterNames.hasMoreElements()) {   
  46.             String name = (String) parameterNames.nextElement();   
  47.             String value = request.getParameter(name);   
  48.             out.println(name + " = " + value + "<p>");   
  49.         }   
  50.         out.println("<B>*********[3].end print parameterNames************</B><p><p>");   
  51.            
  52.         //session   
  53.         out.println("<B>*********[4].begin print session AttributeNames************</B><p>");   
  54.         HttpSession session = request.getSession();   
  55.         Enumeration sAttributeNames = session.getAttributeNames();   
  56.         while (sAttributeNames.hasMoreElements()) {   
  57.             String name = (String) sAttributeNames.nextElement();   
  58.             Object value = session.getAttribute(name);   
  59.             out.println(name + " = " + value + "<p>");   
  60.         }   
  61.         out.println("<B>*********[4].end print session attributeNames************</B><p><p>");   
  62.            
  63.         //cookie   
  64.         out.println("<B>*********[4].begin print Cookie************</B><p><p>");   
  65.         Cookie[] cookie = request.getCookies();   
  66.         for(int i=0; i< cookie.length; i++) {   
  67.             String name = cookie[i].getName();   
  68.             String value = cookie[i].getValue();   
  69.             out.println(name + " = " + value + "<p>");   
  70.         }      
  71.         out.println("<B>*********[4].end print Cookie************</B><p><p>");   
  72.            
  73.     }   
  74.   
  75. }   

2.cas log不起作用
目前那個(gè)log4j不起作用,天天用著的,算是個(gè)小bug,哪個(gè)兄弟下載后能幫忙解決一下,再次謝過^_^

 

 

full architect.jpg
 描述:  
 文件大小:  22 KB
 看過的:  文件被下載或查看 1182 次


下載
client.jpg
 描述:  
 文件大小:  33 KB
 看過的:  文件被下載或查看 1172 次


下載
server.jpg
 描述:  
 文件大小:  27 KB
 看過的:  文件被下載或查看 1157 次


下載


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用Yale CAS Server 來實(shí)現(xiàn)單點(diǎn)登陸(SSO)
單點(diǎn)登錄學(xué)習(xí)(1)CAS服務(wù)器端配置編程
JForum論壇單點(diǎn)登錄的幾種實(shí)現(xiàn)方式 (CAS和Cookie)
Centos中keytool不起作用的解決方法
使用cas實(shí)現(xiàn)sso
Yale CAS + .net Client 實(shí)現(xiàn) SSO(1)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服