數(shù)據(jù)加載中……
          轉(zhuǎn):yale cas 配置談
          原文地址

          TOMCAT :tomcat-5.5.15版
          JDK:1.5.06
          環(huán)境變量要設(shè)好.

          1.        啟用TOMCAT的SSL
          把.keystore文件復(fù)制到TOMCAT的CONF目錄下面。
          在TOMCAT的主目錄的CONF目錄下面,修改server.xml文件,加上以下代碼
          <Connector port="8443" maxHttpHeaderSize="8192"
                         maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                         enableLookups="false" disableUploadTimeout="true"
                         acceptCount="100" scheme="https" secure="true"
                         clientAuth="false" sslProtocol="TLS"
                         keystoreFile="conf/.keystore"
                         keystorePass="changeit"
                         />
          其中的keystoreFile是證書庫文件,keystorePass是訪問此證書庫文件的密碼。
          注:keystore文件可以用以下方法生成。
          Keytool –genkey –alias hostname –keyalg RSA(在接下來的第一項是名稱,記住最好是和hostname同一名稱)執(zhí)行此操作會在用戶的當前目錄(user.home)下產(chǎn)生一個名為.keystore的文件。如果已經(jīng)有了,將自動把新產(chǎn)生的KEY放進文件里面(此次的hostname是運行CAS服務(wù)器的名字.不要搞錯,否則會在以后驗證出錯的.如果你是在本地測試,則用localhost就OK了)
          2.        導(dǎo)入證書文件到各個應(yīng)用的JRE的JVM里面
          首先產(chǎn)生一個證書文件,用以下方法:
          Keytool –export –alias hostname –file filename.cer
          這樣就在用戶當前產(chǎn)生了一個名為filename.cer的文件
          接下來就把此文件導(dǎo)入到各應(yīng)用的的JVM里面
          Keytool –import –alias hostname –file filename –keystore {java_home}\jre\lib\security\cacerts
          注:如果你的JAVA_HOME里面有空格,請用引號括住。
          3.        把cas.war包復(fù)制到TOMCAT的WEBAPPS下面,然后用http://localhost:8080/cas/login就可以訪問登陸了

          改寫驗證方法。CAS的默認方驗證方法是用戶名和密碼相同,如果想改為自己的驗證方式,如何做呢?你只需復(fù)制以下代碼,然后在適當?shù)牡胤讲迦肽愕尿炞C代碼就OK了。
          package org.jasig.cas.authentication.handler.support;

          import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
          import org.springframework.util.StringUtils;

          public final class classname extends
              AbstractUsernamePasswordAuthenticationHandler {

              public boolean authenticateUsernamePasswordInternal(
                  final UsernamePasswordCredentials credentials) {
                  final String username = credentials.getUsername();
                  final String password = credentials.getPassword();

                  if (在此插入你的驗證代碼) {
                      getLog().debug(
                          "User [" + username + "] was successfully authenticated.");
                      return true;
                  }

                  getLog().debug("User [" + username + "] failed authentication");

                  return false;
              }

              protected void afterPropertiesSetInternal() throws Exception {
                  super.afterPropertiesSetInternal();
                  getLog()
                      .warn(
                          this.getClass().getName()
                              + " is only to be used in a testing environment.  NEVER enable this in a production environment.");
              }
          }

          然后,修改deployerConfigContext.xml(在CAS的WEB-INF目錄下面)
          找到
          <bean                        class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
          把class改為你自己寫的驗證的類就OK了。
          到此,服務(wù)器端的配置就完成了。
          接下來是各個應(yīng)用的配置:

          4.(以JAVA的配置為例子)把casclient.jar包復(fù)制到應(yīng)用的lib目錄下面,如果沒有就創(chuàng)建它。然后再在應(yīng)用的部署描述文件里面(web.xml)加上filter。如下:
          <filter>
              <filter-name>CAS Filter</filter-name>
              <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
              <init-param>
                <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
                <param-value>https://casServerhost:8443/cas/login</param-value>
              </init-param>
              <init-param>
                <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
                <param-value>https:// casServerhost:8443/cas/proxyValidate</param-value>
              </init-param>
              <init-param>
                <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
                <param-value>localhost:8080</param-value>
              </init-param>
            </filter>
          <filter-mapping>
            <filter-name>CAS Filter</filter-name>
            <url-pattern>/servlet/*</url-pattern>
          </filter-mapping>

          Localhost是指各個應(yīng)用的服務(wù)器的名字
          casServerHost是指cas服務(wù)器的名字
          其中的filter-mapping就是配置哪些資源是需要通過CAS驗證的。可以配置多個。

          4.        配置語言包
          在cas里面的WEB-INF\classes下面添加不同的語言包,然后再在\WEB-INF\view\jsp\default\ui\includes的top.jsp文件頂部加入<%@ page contentType="text/html; charset=gbk" language="java" %>便可以了。

          一些錯誤信息:
          1.        keytool 認證未輸入別名 <mykey> 已經(jīng)存在
          這是因為你已經(jīng)導(dǎo)入了一信任證書。在進行keytool –import的時候,如果沒有指定別名,則系統(tǒng)默任導(dǎo)入的證書的名字為mykey,所以,可以先刪除此證書keytool –delete –alias mykey –keystore {java_home}\jre\lib\security\cacerts
          然后再從新導(dǎo)入,或者指定別名導(dǎo)入keytool –import –alias name –keystore {java_home}\jre\lib\security\cacerts

          2.        java.io.IOException: Keystore was tampered with, or password was incorrect
          這個很可能你的keystore文件已經(jīng)被修改了,密碼已經(jīng)更改,直接刪除這個文件,再從新生成就可以了
          3.        javax.servlet.ServletException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
          這是因為你沒有在應(yīng)用端導(dǎo)入證書。在應(yīng)用端執(zhí)行keytool –import –alias name –file filename.cer便可以。其中的name.cer是在前面的用keytool –export導(dǎo)出的cer文件

          posted on 2007-10-21 20:07 老五 閱讀(1880) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 平凉市| 北流市| 锡林浩特市| 阳新县| 来安县| 河南省| 许昌县| 额济纳旗| 芒康县| 哈巴河县| 米易县| 湖南省| 和平县| 乌兰浩特市| 屏南县| 南岸区| 于都县| 夹江县| 灵山县| 黑龙江省| 萍乡市| 兴安盟| 遂溪县| 定南县| 泰兴市| 阿拉善盟| 大丰市| 祁门县| 新民市| 宁安市| 泰宁县| 杂多县| 苏州市| 北辰区| 沈丘县| 宁明县| 周至县| 玉田县| 和静县| 磴口县| 齐河县|