Single Sign On

集群环境下存在的问题:
	SOA架构下,用户登录时,用户信息存储在session中,但是session域是不能跨服务器的,因此,用户需要多次登录才能完成身份认证,授予权限

解决思想:
	单点登录,Single Sign On 
在多个应用系统中,配置一个认证服务,只需要登录一次,就可以访问所有互相信任的应用(同一个浏览器下的一次会话)

CAS:
	对SSO思想的实现,分为CAS server / CAS Client
CAS Server 需要独立部署,主要负责对用户的认证工作
CAS Client 负责处理对客户端受保护资源的访问请求
Cookie的key:	CASTGC  (key固定,value不固定)   此处的Cookie的key-value称为CAS Ticket
Cookie的value:CmT2Vn5weUv2BvZK4ShRxyKbQ29mxw6C1MkCyuryU4jlCi5HV7-cas01.example.org

CAS的原理:
	1.当浏览器第一次发送请求时,被CAS Client过滤器拦截,CAS Client访问CAS Server
	2.CAS Server校验浏览器cookie中ticket信息,(由于第一次访问),校验失败,重定向到登录页面
	3.用户点击登录按钮,提交请求到CAS Server,认证成功后,SSO 服务器会产生一个随机的Service Ticket,并将这个cookie信息存储到浏览器中
	4.然后重定向到第一次发送的请求的路径,再次被CAS Client拦截,校验,访问成功
注意: 
1.从哪里被拦截,认证成功后,就会被重定向回到哪里,比如: 
浏览器输入-->http://localhost:9101/index.html--> 被拦截了,重定向到登录页面-->
http://localhost:9100/cas/login?service=http%3A%2F%2Flocalhost%3A9003%2Flogin%2Fcas
-->登录认证成功,会被重定向到最开始访问的URL-->http://localhost:9003/index.html
2.如果退出的时候,指定/logout/cas?service=CAS Client下的资源,这个退出请求一样会被拦截
原生CAS的使用
1.导入依赖
	<dependencies>
		<!-- cas -->  
		<dependency>  
		    <groupId>org.jasig.cas.client</groupId>  
		    <artifactId>cas-client-core</artifactId>  
		    <version>3.3.3</version>  
		</dependency>  		
		
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>  
			<scope>provided</scope>
		</dependency>
	</dependencies>  
2.web.xml中的两个过滤器:
	org.jasig.cas.client.authentication.AuthenticationFilter
 	org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
	第一个过滤器的功能主要是用于认证的,第二个过滤器的功能主要是用于校验ticket信息
注意: 这两个核心过滤器都需要配置CAS Server和CAS Client的路径,CAS Client路径就是当前工程的访问URL
CAS集成Spring Security
Spring Security的核心功能:
	1.登录认证
	2.用户授权
CAS的核心功能:
	1.登录认证
CAS集成Spring Security相当于Spring Security将登录认证功能交给了CAS来完成,Spring Security的执行顺序是先认证再授权,所以-->CAS-->Spring Security
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值