<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://www.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
    收藏了 有時間看看 感謝樓主!  回復  更多評論
      

    主站蜘蛛池模板: 国产成人精品日本亚洲专区6| 99精品免费观看| 乱爱性全过程免费视频| 国产无遮挡色视频免费观看性色 | 两个人日本WWW免费版| 久久狠狠躁免费观看| 免费看美女裸露无档网站| 成人五级毛片免费播放| 亚洲国产av一区二区三区| 亚洲AV无码成人网站久久精品大 | 亚洲一级毛片免费看| 亚洲AV无码成人精品区大在线| 最新亚洲人成无码网www电影| 亚洲中文久久精品无码ww16| 亚洲精品无码av天堂| 国产精品va无码免费麻豆| 99久久免费国产香蕉麻豆| 久久久久高潮毛片免费全部播放 | 久久久久久AV无码免费网站下载 | 亚洲宅男精品一区在线观看| 一级毛片不卡免费看老司机| 可以免费看黄视频的网站| 亚洲中文字幕日产乱码高清app | 亚洲一区影音先锋色资源| 狼人大香伊蕉国产WWW亚洲| 免费黄色福利视频| 亚洲AV无码专区国产乱码电影| 白白色免费在线视频| 最新免费jlzzjlzz在线播放| 亚洲一级特黄特黄的大片| 美女视频黄.免费网址| 日本免费人成在线网站| 亚洲色偷拍另类无码专区| 国产大陆亚洲精品国产| 青春禁区视频在线观看直播免费 | 九九综合VA免费看| 亚洲国产午夜中文字幕精品黄网站| 亚洲乱亚洲乱妇24p| 最新免费jlzzjlzz在线播放| 亚洲伦理中文字幕| 日韩精品无码区免费专区|