久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Yale CAS最佳實踐 --全部-SOA-Java

     nbtymm 2007-03-28
    CAS最佳實踐 第一部分:配置篇
    1.環境準備
    Jdk1.4.2

    Tomcat5.0.28
    cas-server-2.0.12(沒有采用更高版本,是因為它最簡單明了)
    cas-client-java-2.1.1
    2.在jdk上配置SSL
    到http://java./products/jsse/去下載jsse,我用的是1.0.3;下載下來后是一個zip包,把里邊lib目錄下的jar包復制到你的jdk目錄下的jre\lib\ext目錄中,是三個文件:jsse.jar;jnet.jar;jcert.jar

    3.SSL驗證證書
    3.1.生成
    keytool -genkey -alias tomcat -keyalg RSA
    如果C:\Documents and Settings\Administrator\.keystore已經存在,請先刪除。
    輸入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.注意
    請保持C:\Documents and Settings\Administrator\.keystore與%tomcat_home%\conf\.keystore一致

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

    Yale CAS最佳實踐 第二部分:原理篇

    6.概念術語
    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)的憑據,這個TGC 是保存在客戶端的cookie,即當第2次被其他CAS Client重定向的時候,CAS Server實際上已經從用戶的Cookie中抓取到TGC,然后知道TGC對應的用戶,因此避免了再次登錄,如果CAS Server抓取不到TGC,則用戶需要登陸。

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

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

    8.源代碼研讀
    8.1.web.xml參數定義:
    edu.yale.its.tp.cas.client.filter.loginUrl: CAS server的login URL. (Required)
    edu.yale.its.tp.cas.client.filter.validateUrl: CAS server的URL驗證器. (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: 主機名:端口號
    edu.yale.its.tp.cas.client.filter.authorizedProxy: 身份驗證代理,用空格隔開.必須有一個. (缺省,只接受ST,不接受PT)
    edu.yale.its.tp.cas.client.filter.proxyCallbackUrl: 本地代理回調監聽器,用來接受PGT/PGTIOU. (可選)
    edu.yale.its.tp.cas.client.filter.renew: 是否重新登錄參數(缺省為false)
    edu.yale.its.tp.cas.client.filter.gateway: 是否使用網關......雖然英文不難明白,但的確不懂到底有什么用,因而不敢斷章取義,望哪位高手能補充一下,在此謝過
    edu.yale.its.tp.cas.client.filter.wrapRequest: 封裝了HttpServletRequest,重載了getRemoteUser()方法. 如果設置為"true", request.getRemoteUser()將返回登錄用戶名.(可選的,缺省為false.)
    8.2.總體結構圖

    8.3.client源代碼研讀

    8.4.server源代碼研讀

    Yale CAS最佳實踐 第四部分:試試身手

    1.測試類
    我寫了一個RequestInfoServlet,可以顯示HttpRequest的絕大部分有用信息,經過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不起作用
    目前那個log4j不起作用,天天用著的,算是個小bug,哪個兄弟下載后能幫忙解決一下,再次謝過^_^

     

     

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

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

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

    server.jpg
    下載


      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 国产亚洲一区二区在线观看| 欧美亚洲另类 丝袜综合网| 欧美亚洲人成网站在线观看| 大学生久久香蕉国产线看观看| 午夜美女裸体福利视频| 国产69精品久久久久99尤物| 亚洲国产成人久久精品APP| 天天综合网网欲色| 免费人成视频网站在线18| 亚洲精品成人片在线播放| 日韩人妻中文字幕精品| 精品无码国产一区二区三区51安| 中文字幕永久精品国产| 欧美性XXXX极品HD欧美风情| 国产成人午夜精品福利| 国产精品视频第一区二区三区 | 伊人久久大香线蕉AV五月天| 无码人妻斩一区二区三区| 51国偷自产一区二区三区 | 日本久久99成人网站| 人人爽人人片人人片AV| 亚洲AV国产福利精品在现观看| 亚洲熟妇无码AV在线播放| 国产精品午夜剧场免费观看| 在线看片免费人成视频电影| 亚洲中文字幕无码久久精品1| 99精品国产中文字幕| 情侣黄网站免费看| 国产在线午夜不卡精品影院 | 精品久久久久久无码专区| 国语精品自产拍在线观看网站| 好吊视频一区二区三区| 久久精品国产国产精品四凭| 91中文字幕一区二区| 色欲AV伊人久久大香线蕉影院| 乱人伦无码中文视频在线| 亚洲熟妇自偷自拍另类| 在线 | 18精品免费1区2| 亚洲AV天天做在线观看| 色欲国产精品一区成人精品| 婷婷四房播播|