數(shù)據(jù)加載中……

          2007年10月21日

          轉(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是證書庫(kù)文件,keystorePass是訪問此證書庫(kù)文件的密碼。
          注:keystore文件可以用以下方法生成。
          Keytool –genkey –alias hostname –keyalg RSA(在接下來的第一項(xiàng)是名稱,記住最好是和hostname同一名稱)執(zhí)行此操作會(huì)在用戶的當(dāng)前目錄(user.home)下產(chǎn)生一個(gè)名為.keystore的文件。如果已經(jīng)有了,將自動(dòng)把新產(chǎn)生的KEY放進(jìn)文件里面(此次的hostname是運(yùn)行CAS服務(wù)器的名字.不要搞錯(cuò),否則會(huì)在以后驗(yàn)證出錯(cuò)的.如果你是在本地測(cè)試,則用localhost就OK了)
          2.        導(dǎo)入證書文件到各個(gè)應(yīng)用的JRE的JVM里面
          首先產(chǎn)生一個(gè)證書文件,用以下方法:
          Keytool –export –alias hostname –file filename.cer
          這樣就在用戶當(dāng)前產(chǎn)生了一個(gè)名為filename.cer的文件
          接下來就把此文件導(dǎo)入到各應(yīng)用的的JVM里面
          Keytool –import –alias hostname –file filename –keystore {java_home}\jre\lib\security\cacerts
          注:如果你的JAVA_HOME里面有空格,請(qǐng)用引號(hào)括住。
          3.        把cas.war包復(fù)制到TOMCAT的WEBAPPS下面,然后用http://localhost:8080/cas/login就可以訪問登陸了

          改寫驗(yàn)證方法。CAS的默認(rèn)方驗(yàn)證方法是用戶名和密碼相同,如果想改為自己的驗(yàn)證方式,如何做呢?你只需復(fù)制以下代碼,然后在適當(dāng)?shù)牡胤讲迦肽愕尿?yàn)證代碼就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 (在此插入你的驗(yàn)證代碼) {
                      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改為你自己寫的驗(yàn)證的類就OK了。
          到此,服務(wù)器端的配置就完成了。
          接下來是各個(gè)應(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是指各個(gè)應(yīng)用的服務(wù)器的名字
          casServerHost是指cas服務(wù)器的名字
          其中的filter-mapping就是配置哪些資源是需要通過CAS驗(yàn)證的。可以配置多個(gè)。

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

          一些錯(cuò)誤信息:
          1.        keytool 認(rèn)證未輸入別名 <mykey> 已經(jīng)存在
          這是因?yàn)槟阋呀?jīng)導(dǎo)入了一信任證書。在進(jìn)行keytool –import的時(shí)候,如果沒有指定別名,則系統(tǒng)默任導(dǎo)入的證書的名字為mykey,所以,可以先刪除此證書keytool –delete –alias mykey –keystore {java_home}\jre\lib\security\cacerts
          然后再?gòu)男聦?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
          這個(gè)很可能你的keystore文件已經(jīng)被修改了,密碼已經(jīng)更改,直接刪除這個(gè)文件,再?gòu)男律删涂梢粤?br /> 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àn)槟銢]有在應(yīng)用端導(dǎo)入證書。在應(yīng)用端執(zhí)行keytool –import –alias name –file filename.cer便可以。其中的name.cer是在前面的用keytool –export導(dǎo)出的cer文件

          posted @ 2007-10-21 20:07 老五 閱讀(1879) | 評(píng)論 (0)編輯 收藏

          2007年10月8日

          轉(zhuǎn):機(jī)器上有多個(gè)Tomcat的問題

          如果你的機(jī)器有多個(gè)Tomcat,當(dāng)你執(zhí)行一個(gè)Tomcat的startup命令時(shí),它執(zhí)行的是你希望的那個(gè)嗎?

                我機(jī)器有多個(gè)Tomcat的目錄,因?yàn)樗挥冒惭b,所以,我就進(jìn)入到一個(gè)Tomcat的bin目錄,執(zhí)行startup.bat,結(jié)果發(fā)現(xiàn)不對(duì),它執(zhí)行的是另一個(gè)目錄下的Tomcat。

                后來想明白了,是CATALINA_HOME的問題,不管你執(zhí)行的是那個(gè)目錄下的啟動(dòng)命令,而真正執(zhí)行的是CATALINA_HOME配置的那個(gè)Tomcat的命令,或者說startup會(huì)尋找CATALINA_HOME配置的目錄,啟動(dòng)那個(gè)Tomcat。

                切記,否則,會(huì)被耍得很郁悶......

                另外,catalina*.bat文件也很有用,你可以自己編輯這個(gè)文件,為它指定JAVA_HOME,這樣你就可以不用事先安裝JDK或者JRE,自己的程序中打包一個(gè)JDK,然后,指定JAVA_HOME為自己的這個(gè)JDK的相對(duì)路徑,然后用安裝打包工具,如NSIS,Wise等打包,然后,安裝會(huì)把這些東西都復(fù)制到指定的路徑下,你的程序直接執(zhí)行startup命令就可以了,這樣即使用戶不懂技術(shù),安裝步驟也不復(fù)雜。

                還有,好像是Tomcat4.1.29開始,Tomcat對(duì)Get的處理和Post不再一樣,就帶來了Tomcat的URIEncoding的問題,具體解決辦法是配置URIEncoding="字符集",我忘了從那里看到了,寫在這里,如果哪位兄弟知道確切的出處,請(qǐng)告訴我,謝謝!

          原文地址

          posted @ 2007-10-08 21:32 老五 閱讀(352) | 評(píng)論 (0)編輯 收藏

          2007年9月27日

          Eclipse格式化代碼時(shí)不換行

              每次用Eclipse自帶的Ctrl+shift+f格式化代碼時(shí),如果原來的一行代碼大于80列,Eclipse就會(huì)自動(dòng)換為多行,這點(diǎn)個(gè)人感覺不是很舒服,簡(jiǎn)單試了一下,通過以下方式可以修改:
              1、preferences->Java->Code Style->Code Formatter->Show... ,打開之后,選擇“Line Wrapping”選項(xiàng)卡,在“Maximun line width”指定大于多少列時(shí)換行。
              2、還是在“Line Wrapping”選項(xiàng)卡中,能過選擇"Line Wrapping policy"可以指定構(gòu)造函數(shù)、方法體等的換行情況。
              不過,SUN推薦的編碼風(fēng)格默認(rèn)是80列換行。

          posted @ 2007-09-27 22:34 老五 閱讀(3026) | 評(píng)論 (0)編輯 收藏
          僅列出標(biāo)題  
          主站蜘蛛池模板: 洛阳市| 巨野县| 宁明县| 綦江县| 咸阳市| 明光市| 德令哈市| 平塘县| 勃利县| 灵台县| 太湖县| 襄城县| 茂名市| 龙州县| 尼勒克县| 淮安市| 山阴县| 大余县| 玉山县| 鸡东县| 嘉善县| 石柱| 台北市| 曲水县| 泸州市| 宿迁市| 门头沟区| 泾阳县| 抚松县| 五指山市| 江阴市| 江油市| 集安市| 清新县| 治多县| 保德县| 德化县| 鹤峰县| 永仁县| 互助| 时尚|