<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    mashiguang

    小馬快跑

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      20 隨筆 :: 0 文章 :: 60 評論 :: 0 Trackbacks
     

    使用cassso helloword

    因為工作需要接觸到sso,據知目前多數sso使用耶魯的cas實現,且發現使用cas真的是很簡單就可以做出一個單點登錄系統來,cas還提供豐富的擴展功能,對于擴展功能日后再細細研究,這里只使用cas做一個hello world來記錄本人的學習過程,如有幸被高人看到,還望指出弊病,不吝賜教。

    在使用cas之前最好對數字證書有所了解,不了解也沒有關系,跟著我的步驟也一樣可以跑的通。

    準備工作

    需要的文件:

    ü         Jdk6

    ü         Tomcat

    ü         cas-server-3.3.2

    ü         cas-client-3.1.9

    證書

    下面是keytool命令的一些常用方法,先在這里認識一下它們,一會兒會用的到。

    使用keytool命令生成密鑰庫

    keytool -genkey -alias tomcat -keyalg RSA -dname "CN=pcma, OU=vanceinfo, O=vanceinfo, L=haidian, S=beijing, C=CN" -keystore c:"keystore5.jks

    CN:主機名

    OU:組織單位

    O:組織

    L:地區

    S:城市

    C:國家

    如果需要指定密鑰有效期,添加-validity 365即可,單位是天,如:
    keytool -genkey -alias tomcat -keyalg RSA -dname "xxxxx" -keystore xxxxx -validity 365

    導出證書

    keytool -export -file c:/server5.crt -alias tomcat -keystore c:"keystore5.jks

    將證書導入到客戶端jdk

    keytool -import -keystore "D:"Java"jdk1.6.0_14"jre"lib"security"cacerts" -file c:/server5.crt -alias tomcat

    從密鑰庫中刪除指定別名的證書

    keytool -delete -noprompt -alias tomcat -keystore E:"apache-tomcat-6.0.20_2"conf"keystore2.jks

    查看密鑰庫中的證書

    keytool -list -v -keystore c:"keystore5.jks

    配置tomcat

    使用keytool命令生成密鑰庫。

    配置%tomcat_home%/conf/server.xml使tomcat支持SSL協議,并指定密鑰庫。

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

                   maxThreads="150" scheme="https" secure="true"

                   clientAuth="false" sslProtocol="TLS" keystorePass="mashiguang"

                            keystoreFile="${catalina.home}/conf/keystore5.jks"/>

    部署cas server

    解壓縮cas-server-3.3.2-release.zip文件,在modules目錄里找到cas-server-webapp-3.3.2.war文件,這就是一個做好了的cas服務端,我們做的sso helloword可以直接使用,只需把cas-server-webapp-3.3.2.war改了個簡單點的名字,如cas.war,然后部署到tomcat即可。

    瀏覽器訪問https://pcma:8443/cas,如果打開顯示的是cas默認的登錄頁面,則表示服務端已部署完畢。

    客戶端使用cas client

    新建兩個web工程,用于模擬單點登錄系統中的客戶端,并將cas-client-3.1.9"modules里的jar包放到web工程lib目錄下,是主要的是cas-client-core-3.1.9.jar文件,把spring2.5也放到lib目錄下。

    Web.xml文件

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="2.4"

           xmlns="http://java.sun.com/xml/ns/j2ee"

           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

           http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

           <context-param> 

            <param-name>contextConfigLocation</param-name> 

            <param-value> 

                /WEB-INF/config/casContext.xml  

            </param-value> 

        </context-param> 

        <listener> 

            <listener-class> 

                org.springframework.web.context.ContextLoaderListener  

            </listener-class> 

        </listener> 

        <!-- 負責用戶認證 --> 

        <filter> 

            <filter-name>CAS Authentication Filter</filter-name> 

            <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> 

            <!-- CAS login 服務地址--> 

            <init-param> 

                <param-name>casServerLoginUrl</param-name> 

                <param-value>https://pcma:8443/cas/login</param-value> 

            </init-param> 

            <init-param> 

                <param-name>renew</param-name> 

                <param-value>false</param-value> 

            </init-param> 

            <init-param> 

                <param-name>gateway</param-name> 

                <param-value>false</param-value> 

            </init-param> 

            <!-- 客戶端應用服務地址--> 

            <init-param> 

                <param-name>serverName</param-name> 

                <param-value>http://pcma:8081</param-value> 

            </init-param> 

        </filter> 

        <!--負責Ticket校驗--> 

        <filter> 

            <filter-name>CAS Validation Filter</filter-name> 

            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 

            <init-param> 

                <param-name>targetBeanName</param-name> 

                <param-value>cas.validationfilter</param-value> 

            </init-param> 

        </filter> 

        <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> 

    </web-app>

    casContext.xml文件

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

                  "http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>

    <bean id="cas.validationfilter" class="org.jasig.cas.client.validation.Cas10TicketValidationFilter"> 

            <property name="ticketValidator"> 

                <ref bean="cas10TicketValidator"/> 

            </property> 

            <property name="useSession"> 

                <value>true</value> 

            </property> 

            <!-- 客戶端應用服務地址--> 

            <property name="serverName"> 

                <value>http://pcma:8081</value> 

            </property> 

            <property name="redirectAfterValidation"> 

                <value>true</value> 

            </property> 

        </bean> 

        <bean id="cas10TicketValidator" class="org.jasig.cas.client.validation.Cas10TicketValidator"> 

        <!-- 這里參數是cas服務器的地址--> 

            <constructor-arg index="0" value="https://pcma:8443/cas" /> 

        </bean> 

    </beans> 

    新建index.jsp文件

     <body>

       hello sso<br>

       <a >sso2</a>這個地址是另外一臺機器上的sso客戶端

     </body>

    上面的web.xmlcasContext.xmlindex.jsp是兩個客戶端中的一個,另一個要根據實際情況修改。

    最后不要忘記客戶端的jdk要使用keytool命令導入證書文件。

    測試

    啟動tomcat,測試器訪問http://pcma:8081/sso,出現cas登錄頁面,輸入相同的用戶名和密碼即可登錄,登錄成功后頁面自動跳轉回http://pcma:8081/sso,這時點擊頁面上的sso2鏈接,就可以自動登錄并跳轉到sso2應用。

    如果輸入用戶名密碼后提示下面的異常,是因為部署客戶端的jdk沒有導入證書文件的原因。

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


    源碼

    http://m.tkk7.com/Files/mashiguang/sso.zip

    posted on 2009-12-07 09:50 mashiguang 閱讀(1857) 評論(4)  編輯  收藏 所屬分類: java web開發

    評論

    # re: hello cas 2009-12-07 13:02 20G高壓鍋爐管
    搶個沙發  回復  更多評論
      

    # re: hello cas 2009-12-08 10:50 凡客誠品
    踩踩!!!!!  回復  更多評論
      

    # re: hello cas 2009-12-08 20:27 smildlzj
    以前用過一下...感覺用著不是很爽...

    其實原理差不多....但是不知道為什么好像那么不爽....
    原理都是.

    unlogin->redirect sso server->redirect key to client->client get data from sso server

    模擬以上原理...自己弄了一個企業內部的通行證系統,sso的用戶綁定各子系統賬號id.(不允許用戶自己注冊的,所以我自己手工綁定,而且垮幾個應用的,絕對不是最基層的員工)

    我倒希望哪位大大給我說下.cas有什么過人之處.

      回復  更多評論
      

    # re: hello cas 2009-12-11 13:33 BeanSoft
    收藏了 有時間看看 感謝樓主!  回復  更多評論
      

    主站蜘蛛池模板: 成全高清视频免费观看| 7m凹凸精品分类大全免费| 日本午夜免费福利视频| 中日韩亚洲人成无码网站| 久久成人国产精品免费软件| 亚洲理论精品午夜电影| 永久看日本大片免费35分钟| 亚洲黄色网站视频| 我们的2018在线观看免费高清| 亚洲午夜精品国产电影在线观看| 国产妇乱子伦视频免费| 国产成人精品亚洲日本在线| 成年女人18级毛片毛片免费 | 亚洲国产日韩在线人成下载| 免费观看美女用震蛋喷水的视频| 国产精品高清视亚洲精品| 卡1卡2卡3卡4卡5免费视频| 亚洲AV无码片一区二区三区 | 午夜两性色视频免费网站| 欧美色欧美亚洲另类二区| 免费一级毛片在线播放| XXX2高清在线观看免费视频| 亚洲国产日韩一区高清在线| 午夜国产精品免费观看| 精品亚洲成a人在线观看| 亚洲AV噜噜一区二区三区| 亚洲国产高清精品线久久| 叮咚影视在线观看免费完整版| 日韩亚洲Av人人夜夜澡人人爽| 免费无码AV电影在线观看| 国产亚洲视频在线| 亚洲AV无码日韩AV无码导航| 亚洲精品视频免费看| 国产精品亚洲а∨无码播放不卡| 亚洲精品国产字幕久久不卡| 在线观看成人免费视频不卡| 国产精品自拍亚洲| 亚洲人成网站在线播放影院在线 | 亚洲人成电影在线播放| 37pao成人国产永久免费视频| 无码一区二区三区亚洲人妻|