【SSO】——使用CAS实现二级域名不同的网站的单点登录(二)

本文详细介绍了如何借助CAS实现不同二级域名间的单点登录。通过配置CAS服务端和客户端,设置Cookie和Session,实现了从www.blog.com到www.news.com的无缝登录体验。在CAS流程中,用户认证后在Cookie中保存信息,然后重定向回原网站,确保了登录状态的共享。
摘要由CSDN通过智能技术生成

回顾

上一篇文章中,实现了二级域名相同的网站的单点登录的效果。但是利用上篇文章的方式不能满足诸如:www.blog.com和www.news.com这样二级域名不同的网站的单点登录。

问题出在哪呢?
就是当访问一个网站把Cookie存放到某个地方之后,再访问另一个网站没有权限拿到这个Cookie。
为什么没有权限拿到呢?
因为Cookie生成的时候设置的Domain和Path的限制。这两个属性决定了在允许的域和资源路径范围内,当访问一个网站成功并保存了Cookie之后,再访问另一个网站的资源(属于允许的域和资源路径范围)的时候,浏览器会自动携带刚刚生成的Cookie并发送到服务端;否则,就不会把Cookie发送到服务端。

实现思路

如果还是利用Cookie+Filter我们怎么实现在二级域名不同的网站的单点登录效果呢?

——借助第三者,专门用来认证用户信息的一个“网站”。

1.比如我们访问www.blog.com的时候,我们把请求转给“第三者”,认证通过之后,在Cookie中保存用户信息,在Session中保存用户信息,将请求重定向给我们刚才的访问路径。
Cookie属于谁?——第三者。设置它的目的是:为了其他网站能得到用户信息。
在Session中保存用户信息的目的:当第三者认证通过再次将请求定向到原网站的时候,我们肯定会判断Session中是否为空。所以在重定向之前要给Session赋上值。
2.当我们访问www.news.com的时候,请求也会转给第三者,这个时候我们能拿到Cookie,就直接在Session中保存用户信息,并重定向到之前访问的路径。

所以Cookie是用来几个网站共享用户信息的,Session是用来每个网站自己内部判断能否登录的。

流程

这里写图片描述

CAS实现

上述其实就是CAS的基本过程,但是还有一些具体的细节和流程不在本篇文章说明。下面说说具体的实现。

我们只需要把CAS自带的服务端的Demo部署到server\ROOT路径下,把客户端的demo分别部署到blog\ROOT和news\ROOT下。

这里写图片描述

修改host文件

127.0.0.1     www.news.com
127.0.0.1     www.blog.com
127.0.0.1     www.server.com

修改server.xml文件

<Host name="www.news.com" appBase="news"></Host>
<Host name="www.blog.com" appBase="blog"></Host>
<Host name="www.server.com" appBase=
当用户第一次访问web应用系统1的时候,因为还没有登录,会被引导到认证中心进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,返回给用户一个认证的凭据;用户再访问别的web应用的时候就会将这个Token带上,作为自己认证的凭据,应用系统接受到请求之后会把Token送到认证中心进行效验,检查Token的合法性。如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。所有应用系统共享一个身份认证系统。认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志,返还给用户。另外,认证系统还应该对Token进行效验,判断其有效性。 所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过,从而完成单点登录的功能。 比如说,我现在有3个分站点和1个认证中心(总站)。当用户访问分站点的时候,分站点会发Token到验证中心进行验证。验证中心判断用户是否已经登录。如果未登录,则返回到验证中心登录入口进行登录,否之则返回Token验证到分站点,直接进入分站点
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值