实现单点登录(WAS+CAS)三…

来源于一位同事的总结。

一 cas server 端部署   (以 was7.0 和 cas3.4.8 举例)

首先在 was7.0 上安装 cas-server-webapp-3.4.8.war

安装完成后 , 启动时会报错。

1.       日志中会提示 persistence.xml 中的 version 属性为【 1 】。将 cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFclassesMETA-INFpersistence.xml    中

version="2.0"  改为   version="1.0"

 

2.     会提示一些类的方法找不到,原因是由于 jar 包冲突 , 需要就将 cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFlib hibernate-jpa-2.0-api-1.0.0.Final.jar   删除 . 建议复制到其他目录 , 以免出现错误 , 无法返回 .

然后修改以下配置文件中的内容,去除( https 安全认证的验证方式),可以免除数字证书的生成的导入。

 

1 . cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFspring-configurationwarnCookieGenerator.xml    中 p:cookieSecure="true"  改为   p:cookieSecure="false"


2. cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFspring-configurationticketGrantingTicketCookieGenerator.xml    中 p:cookieSecure="true"  改为   p:cookieSecure="false"


3. cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFdeployerConfigContext.xml   中   
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" />


改为


<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" p:requireSecure="false" />

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> <o:p> </o:p>

最后将以下文件中的请求地址改为 cas server 所在的地址和端口。

cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFcas.properties

二 cas client端部署,这边比较简单,主要是修改web.xml.具体内容如下:(当客户端需要部署在was上时,需要使用websphere7.0.0.7及以上的版本。本人在was7.0.0.0上测试部署客户端时,遇到客户端请求不能被拦截跳转等问题。)
1. 首先导入jar包 : cas-client-core-3.2.0.jar
2. 修改web.xml,添加以下内容

<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
 <!-- 用于单点退出,该过滤器用于实现单点登出功能,通知其他应用单点登出-->

 <listener>
  <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
 </listener>
 <filter>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- 该过滤器负责用户的认证工作,必须启用它 -->
 <filter>
  <filter-name>CAS Authentication Filter</filter-name>
  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  <init-param>
   <param-name>casServerLoginUrl</param-name>
   <!-- 下面这个地址是cas server端的登录请求地址 -->
   <param-value>http://localhost:9080/cas/login</param-value>
  </init-param>
  <init-param>
   <param-name>serverName</param-name>
   <!-- 下面这个地址是本应用所部署的访问地址,不加上下文 -->
   <param-value>http://localhost:8080</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>
 </filter>
 <filter-mapping>
  <filter-name>CAS Authentication Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
 <filter>
  <filter-name>CAS Validation Filter</filter-name>
  <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
  <init-param>
   <param-name>casServerUrlPrefix</param-name>
   <!-- 下面这个地址是cas server端的地址 -->
   <param-value>http://localhost:9080/cas</param-value>
  </init-param>
  <init-param>
   <param-name>serverName</param-name>
   <!-- 下面这个地址是本应用所部署的访问地址,不加上下文 -->
   <param-value>http://localhost:8080</param-value>
  </init-param>
     <init-param>    
            <param-name>useSession</param-name>    
            <param-value>true</param-value>    
        </init-param>    
        <init-param>    
            <param-name>redirectAfterValidation</param-name>    
            <param-value>true</param-value>    
        </init-param>  
 </filter>
 <filter-mapping>
  <filter-name>CAS Validation Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

 <!--
  该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过 HttpServletRequest 的
  getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
 -->
 <filter>
  <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!--
  为每一个线程创建资源副本
 -->
 <filter>
  <filter-name>CAS Assertion Thread Local Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>CAS Assertion Thread Local Filter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <!--
  自动根据单点登录的结果设置本系统的用户信息,可以从cas中获取登录用户的登录账户,通过此账户在本系统获取登录用户的相关信息
 -->
 <filter>
  <display-name>AutoSetUserAdapterFilterImp</display-name>
  <filter-name>AutoSetUserAdapterFilterImp</filter-name>
  <filter-class>com.common.view.filter.AutoSetUserAdapterFilterImp</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>AutoSetUserAdapterFilterImp</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>



三 cas配置LDAP验证机制
1. 在cas server 端cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFlib下,加入cas-server-support-ldap-3.4.8.jar,spring-ldap-core-1.3.1.RELEASE.jar,spring-ldap-core-tiger-1.3.1.RELEASE.jar三个jar包
2. 修改cas-server-webapp-3_4_8_war.earcas-server-webapp-3.4.8.warWEB-INFdeployerConfigContext.xml.注意其中修改内容需和实际部署的环境保持一致,如:请求地址,用户名,密码,以及LDAP中的node结构等。
A. 增加

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="true" />
<property name="urls">
<list>
<value>ldap://10.48.1.140:389/</value>
</list>
</property>
<property name="userDn" value="cn=root"/>
<property name="password" value="chinasofti" />
<property name="baseEnvironmentProperties">
<map>
<entry key="java.naming.security.authentication" value="simple" />
</map>
</property>
</bean>


B. 将

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />


修改为:

<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler">
<property name="filter" value="uid=%u,cn=users,DC=HNZY,DC=COM" />
<property name="contextSource" ref="contextSource" />


</bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ma_xs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值