随笔 - 37  文章 - 14  trackbacks - 0
<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

随笔分类

随笔档案

文章分类

相关链接

搜索

  •  

最新评论

阅读排行榜

评论排行榜

基于CAS+Tomcat配置SSO
一、系统配置
cas server3.1.1
cas client 2.1.1
tomcat5.5

二. Tomcat 配置,启用SSL
a. 在要安装CAS的机器上为Tomcat生成用于SSL通讯的密钥:%JAVA_HOME%/bin/keytool -genkey -alias tomcat -keyalg RSA
这时需要输入密钥密码和其他参数(第一个参数CN必须设置为CAS机器名,本机使用localhost测试),会在系统用户目录中生成.keystore密钥文件。

b. 导出别名为tomcat的密钥文件:%JAVA_HOME%/bin/keytool -export -file /path/server.crt -alias tomcat 这时需要输入上一步设定的密码,结果会在/path/目录生成server.crt信任状。

c. 为客户端的JVM导入密钥::%JAVA_HOME%/bin/keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file /path/server.crt -alias tomcat 注意:输入密码时密码为"changeit",这是默认密码。

d. 修改服务端Tomcat配置文件,启用SSL如下:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads
="150" scheme="https" secure="true" 
               clientAuth
="false" sslProtocol="TLS"
               keystoreFile
="D:\JAVA\Tomcat5.5\tomcat.keystore"
               keystorePass
="changeit" 
               truststoreFile
="C:/Program Files/Java/jdk1.5.0_04/jre/lib/security/cacerts" />
三、CAS Server安装
把cas-server-webapp-3.1.1.war copy到tomcat\webapps下重命名为cas;可能需要修改的cas.properties里的cas server name。
https://localhost:8443/cas/longin
默认的cas server的验证是只要用户名和密码一样就可以登陆。可以通过修改deployerConfigContext.xml里的authenticationHandlers为自己的验证机制,如mysql验证用户,如下
        <property name="authenticationHandlers">
            
<list>
                
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
                    p:httpClient-ref
="httpClient" />
            
                    
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
                            
<property name="sql" value="select password from user where username=?" />
                            
<property name="dataSource" ref="dataSource" />
           
</bean>
            
</list>
        
</property>
并增加一个mysql dataSource
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
                
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
                
<property name="url"><value>jdbc:mysql://localhost:3306/sso</value></property>
                
<property name="username"><value>root</value></property>
                
<property name="password"><value>****</value></property>
        
</bean>
四、CAS CLIENT配置
以servlet-example为例子
在web.xml增加下面内容
<!-- CAS Filters --> 
<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>client:port</param-value><!--client:port就是需要CAS需要拦截的地址和端口,一般就是Client端的IP和port--> 
</init-param> 
</filter> 

<filter-mapping> 
<filter-name>CASFilter</filter-name> 
<url-pattern>/servlet/*</url-pattern> 
</filter-mapping> 
其中edu.yale.its.tp.cas.client.filter.serverName的value为需要CAS需要拦截的地址和端口,一般就是Client端的IP/主机名和port
当输入http://localhost:8080/servlet-exampls/servlet/HelloWorld就会要求跳转到cas login窗口要求身份验证。
至此,SSO配置完成;但会出现下面问题
1:假设有A、B两个应用程式,现在在浏览器窗口1输入对A应用程式的请求,会跳转到cas login窗口身份验证;身份验证完成后跳转会A应用程式请求页面
2:在窗口2输入对B应用程式请求,还会需要身份验证
3:在窗口1修改URL为对B应用程式的请求,不需求身份验证
请看CAS SSO配置下文
posted on 2007-11-19 11:27 扭曲的铅笔 阅读(9421) 评论(5)  编辑  收藏 所属分类: J2EE

FeedBack:
# re: CAS SSO配置(上) 2008-08-12 16:05 
一个字“好”!!  回复  更多评论
  
# re: CAS SSO配置(上)[未登录] 2008-10-17 16:07 王鹏
文章写得很不错,再接再励!

  回复  更多评论
  
# re: CAS SSO配置(上) 2009-03-13 09:19 guooo
2:在窗口2输入对B应用程式请求,还会需要身份验证


这不失去sso的意义了嘛  回复  更多评论
  
# re: CAS SSO配置(上) 2011-02-17 10:15 陌生
严重: Error configuring application listener of class org.jasig.cas.client.session.SingleSignOutHttpSessionListener
怎么会报错啊  回复  更多评论
  
# re: CAS SSO配置(上) 2011-02-17 10:16 陌生
java.lang.ClassNotFoundException: org.jasig.cas.client.session.SingleSignOutHttpSessionListener
说类加载失败,我是官方下载的cas-client-java-2.1.1  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: