CAS

应用场景

当几个应用系统需要同一个入口时,那么此时就需要配置CAS统一单点登录了。

操作步骤

SSO实现有很多产品,我们今天选用的这个是耶鲁大学发明的CAS SSO服务器。这个CAS SSO是目前我看到过的功能较全的,使用也是最简单的配置式SSO服务器,它基于SPRING的原理,因此这个配置文件我们看起来因当是相当的熟悉的。
示例以cas-server-3.5.2-release.zip结合web应用完成单点登录方案验证。

1、搭建cas server环境

打开cas.zip包,解压后,将cas文件夹拷贝到tomcat的webapps中。
启动应用服务器后,war包自动部署后访问http://ip:port/cas/login打开cas登录页面,默认密码admin/admin,点击登录显示登录成功,表明cas server搭建成功。

2、配置web实现单点登录

打开应用服务器目录,进入WEB-INF目录,编辑web.xml文件,具体修改过程如下所示:

首先注释下面filter过滤器

接下来新增过滤器如下(放到过滤器的最前面)


	org.jasig.cas.client.session.SingleSignOutHttpSessionListener



	CAS Single Sign Out Filter
		org.jasig.cas.client.session.SingleSignOutFilter


	CAS Single Sign Out Filter
	/*

	

	CAS Authentication Filter
	org.jasig.cas.client.authentication.AuthenticationFilter
	
		localLoginUrl
		http://192.168.202.6:8086/dgs/login.do
	
	
	
		casServerLoginUrl
		http://192.168.202.6:8081/cas/login
	
	
		renew
		false
	
	
		serverName
		http://192.168.202.6:8086
	


	CAS Authentication Filter
	/*



	CAS Validation Filter
	org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
	
		casServerUrlPrefix
		http://192.168.202.6:8081
	
	
		redirectAfterValidation
		true
	
	
		useSession
		true
	
	
		serverName
		http://192.168.202.6:8086
	


	CAS Validation Filter
	/*



	CAS HttpServletRequest Wrapper Filter
	org.jasig.cas.client.util.HttpServletRequestWrapperFilter


	CAS HttpServletRequest Wrapper Filter
	/*



	CAS Assertion Thread Local Filter
	org.jasig.cas.client.util.AssertionThreadLocalFilter
	

	CAS Assertion Thread Local Filter
	/*

注:以上配置中的IP地址及端口信息请结合cas服务器及web服务器实际部署情况进行修改。
如http://127.0.0.1:6080/dgs/login.do为具体应用的登录入口。
如http://127.0.0.1:8080/cas/login为CAS单点登录服务器登录入口。

3、web应用单点登录补丁

修改webapps\dgs\WEB-INF\classes中的deploy.properties文件,新增属性
SSO_LOG_EXCEPTION=http://IP:8080/cas/logout?service=http://IP:6080/dgs/login.do
http://IP:8080/cas/logout为CAS server登出连接。

4、CAS从数据库获取登录帐号和密码

CAS默认登录帐号为admin/admin仅用于测试的帐号信息,存在安全隐患,现介绍从数据库中获取帐号和密码的配置方法。

首先创建数据库表TB_SYS_USER,以MYSQL为例,脚本如下
CREATE TABLE `TB_SYS_USER` (
`USER_ID`  varchar(64) NOT NULL ,
`PASSWORD`  varchar(128) NOT NULL ,
PRIMARY KEY (`USER_ID`)
);
同步web应用中的帐号和密码至TB_SYS_USER中。
修改配置文件deployerConfigContext.xml,增加jdbc数据库(以MySql为例)连接
  
	  
	  
	  
	  

配置加密方式,CAS内置有MD5加密,也可以自己编写加密类,实现PasswordEncoder接口即可:

	
		MD5
	


注释掉默认的验证方式,采用数据库查询验证:

  
	  
	
	
 

添加相关jar包至CAS server的WEB-INF目录中的libs中,打开cas-server-3.5.2-release.zip进入modules目录,拷贝cas-server-support-jdbc-3.5.2.jar至libs中,同时下载mysql数据库连接驱动mysql-connector-java-5.0.8-bin.jar至libs中,重启CAS server。

5、服务登出访问

服务器端退出访问:http://localhost:8080/cas/logout,若希望退出后能返回则需要配置,服务端cas-servlet.xml配置

增加属性 p:followServiceRedirects="true"
退出链接为:http://localhost:8080/cas/logout?service=http://localhost:6080/dgs

你可能感兴趣的:(通用组件)