`
csbison
  • 浏览: 149720 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CAS学习笔记

阅读更多

•相关文档

   官方文档:

http://www.ja-sig.org/products/cas/  

http://www.ibm.com/developerworks/web/library/wa-singlesign/

http://developer.yahoo.com/auth/

 

网友学习笔记:

  JA-SIGCAS)学习笔记1 http://linliangyi2007.iteye.com/blog/165307

  JA-SIGCAS)学习笔记2 http://linliangyi2007.iteye.com/blog/165310

  JA-SIGCAS)学习笔记3 http://linliangyi2007.iteye.com/blog/165313

 

    •生成和导入数字证书的步骤:

    

1. 生成 server keystore

 

keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

注意:

keystore里面放什么东西呢?

keystore存放着两种数据:密钥(或公私钥对)和信任证书。信任证书中只包含公钥。

你之后会发现keystore文件比导出的证书server.cer大;例如某示例中server.cer564字节,而keystore文件是1.3KB

 

2. (keystore)导出证书,并导入到jvm的证书机构中

keytool -export -trustcacerts -alias tomcat -file server.cer -keystore  server.keystore -storepass changeit

keytool -import -trustcacerts -alias tomcat -file server.cer -keystore  %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

 

//其他参考指令

//keytool -list -v -keystore %JAVA_HOME%/jre/lib/security/cacerts

//keytool -delete -trustcacerts -alias tomcat  -keystore  %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

 

3. 修改conf\server.xml

<Connector protocol="org.apache.coyote.http11.Http11Protocol"    

                     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="server.keystore"    

           keystorePass="changeit"/>

注意:

keystoreFile属性是指定keystore的文件路径。

truststoreFile属性是指定信任证书的文件路径。

clientAuth属性设置为false表示单向SSL,一般的都是单向SSL。设置为true表示双向SSL

 

 

4. 部署cas.wartomatwebapps目录下

5. 配置受管的web应用:

    1casclient.jar拷贝到你所发布的webappWEB-INF/lib

    2)在web.xml中加入——

    <filter>

        <filter-name>CASFilter</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://localhost:8443/cas/login</param-value>

        </init-param>

        <init-param>

           <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>

           <param-value>https://localhost:8443/cas/proxyValidate</param-value>

        </init-param>

        <init-param>

          <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>

          <param-value>localhost:4040</param-value>

        </init-param>

   </filter>

 

注意:

在第1步骤生成keystore需要指定CN:就是服务器的域名(或者是localhost),不能是IP地址。配置CAS客户端的配置参数中的“edu.yale.its.tp.cas.client.filter.serverName”表示验证完毕将跳转到原来的客户端应用。这里可以填IP,例如192.168.2.9:4040;不过记得不要以http://开头。

 

 

    CAS验证中心的定制和开发:

    

需要实现下面的3个步骤:

 

1. 自定义AuthHandler

自己实现AuthenticationHandler接口,或者利用用户名/密码的方式进行验证的话可以采用extends AbstractUsernamePasswordAuthenticationHandler

 

2. 修改配置文件

修改cas\WEB-INF\deployerConfigContext.xml,在<property name="authenticationHandlers">中注释掉之前的bean,加上自己自定义的authenticationHandler

 

3. 定制身份验证登录界面

需要修改以下页面(在cas\WEB-INF\view\jsp\路径下)——

casConfirmView.jsp —— 确认信息(警告信息)页面

casGenericSuccess.jsp —— 登陆成功提示页面

casLoginView.jsp —— 登录输入页面

casLogoutView.jsp —— SSO登出提示页面

 

 

 

    •受管web应用的定制和开发:

    

选择下面步骤的其中之一:

 

1. session中获取用户名

String username = (String)session.getAttribute(CASFilter.CAS_FILTER_USER);

或者

String username = (String)session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

 

2.获得更完整的受认证用户信息对象CASReceipt Java Bean,可以使用以下语句的任一:

 

CASReceipt receipt = (CASReceipt )session.getAttribute(CASFilter.CAS_FILTER_RECEIPT);

或者 CASReceipt receipt = (CASReceipt )session.getAttribute("edu.yale.its.tp.cas.client.filter.receipt");

 

3.手工编码使用CAS Java Object进行用户验证,使用ServiceTicketValidator或者 ProxyTicketValidator(代理认证模式下),在servlet中对用户身份进行验证。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics