我要在原有的SSH项目中加入CAS实现单点登录,请问服务端(验证中心)那个项目里怎么依赖注入定制的验证类

我要在原有的SSH项目中加入CAS实现单点登录,请问服务端(验证中心)那个项目里怎么依赖注入定制的验证类

问题描述:

来了的朋友请先看前提:一切部署已经就绪,现在要做的就是自定义验证用户的方法。注意是纯手写定义的,因为考虑到扩展和移植,不要发给我那些继承了CAS里用户名密码验证的类或者是JDBC传入语句的,那些我都知道。

我自定义了一个UserValidateHandler类,继承自CAS中的AbstractPreAndPostProcessingAuthenticationHandler。
在doAuthentication()方法中实现了验证方法。

现在请问如何将此类注入到整个体系中,我原项目是Spring Struts2 Hibernate的,现在加入了CAS

恳请了解的朋友指教:)

如果是用cas server的登录页面的话,
credentials这玩意会自动传递过来的

你的这个自定义实现类必须让CAS知道,CAS server里有相应的配置文件来注入这个bean

配置你的身份认证程序
完成了定制认证类的代码编写,接下来就是要让CAS Server来调用它了。在CAS的框架中,对程序的配置都是使用Spring Framework的xml文件,这对于熟悉Spring的程序员而言算驾轻就熟了。
配置文件位于应用部署目录的WEB-INF子目录下——deployerConfigContext.xml。在bean id=authenticationManager 的 authenticationHandlers属性中配置我们的AuthenticationHandlers:

引用

<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

class="org.jasig.cas.authentication.AuthenticationManagerImpl">
。。。
。。。



<!—下面就是系统默认的验证器配置,你可以替换它,或者增加一个新的handler -->




。。。
。。。

我们发现authenticationHandlers属性是一个list,在这个list中可以配置多个AuthenticationHandlers。这些AuthenticationHandlers形成了一个验证器链,所有提交给CAS的Credentials信息将通过这个验证器链的链式过滤,只要这链中有一个验证器通过了对Credentials的验证,就认为这个Credentials是合法的。这样的设计使得我们可以很轻松的整合不同验证体系的已有应用到同一个CAS上,比如:A验证器负责校验alpha系统提交的Credentials,它是基于LDAP服务器的;B验证器负责校验beta系统提交的Credentials,它是一个传统的RDB用户表认证;C验证器负责校验gamma系统提交的基于RSA证书加密的Credentials。3种完全不同的用户身份认证通过配置就可以统一在同一个CAS服务内,很好很强大,不是吗!!

配置认证实现类就是这样了,关键是基础环境的搭建

基本上看看这几个文章就能搭建成功, 原理也搞懂了,

1,2年前我们公司也整合cas进来,当初也就看这文章搞定的
http://www.iteye.com/topic/165313
http://www.iteye.com/topic/40129

参数的接收那就要扩展cas客户端的filter了,里面增加相应的参数处理跳转