CAS统一认证平台

CAS统一认证平台的原理和用户登录流程被详细阐述,包括票据的获取和验证。文章指出,由于缺少Access-Control-Allow-Origin头,导致跨域问题。同源策略和预检请求(OPTIONS)在此过程中起关键作用。为解决跨域问题,提出了将Ajax请求转换为常规HTTP请求的方法,以避免预检请求。对于登陆和登出场景,给出了相应的解决方案。

CAS统一认证平台

原理

20160905134018381

用户首次登录时流程

1)、用户浏览器访问系统A需登录受限资源,此时进行登录检查,发现未登录,然后进行获取票据操作,发现没有票据。

2)、系统A发现该请求需要登录,将请求重定向到认证中心,获取全局票据操作,没有,进行登录。

3)、认证中心呈现登录页面,用户登录,登录成功后,认证中心重定向请求到系统A,并附上认证通过令牌,此时认证中心同时生成了全局票据。

4)、此时再次进行登录检查,发现未登录,然后再次获取票据操作,此时可以获得票据(令牌),系统A与认证中心通信,验证令牌有效,证明用户已登录。

5)、系统A将受限资源返给用户。

请求跨域原因

image-20211228094144346

从上图可以看出,在统一登陆预检请求的返回头中并没有Access-Control-Allow-Origin请求头,这也是跨域的问题所在。

表示该请求不允许跨域请求。浏览器控制台并会打印下图错误:

image-20211228094526803

究其原因:CAS服务端并未开启允许跨越请求

CAS服务端为啥不开启允许跨域请求:安全上不允许(百度结果,具体可以看看CAS认证原理)。

怎样才被视为跨域

这里涉及同源策略,非同源请求皆是跨域

同源策略的基本概念

1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。同源策略:最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"。

协议相同
域名相同
端口相同

同源策略的目的

同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。

预检请求(preflight request)

请求方式:OPTIONS

Preflighted Requests是CORS中一种透明服务器验证机制。预检请求首先需要向另外一个域名的资源发送一个 HTTP OPTIONS 请求头,其目的就是为了判断实际发送的请求是否是安全的。

20181218172737930

简言之,options请求是用于请求服务器对于某些接口等资源的支持情况的,包括各种请求方法、头部的支持情况,仅作查询使用。

普通请求(HttpRequest)和Ajax请求(XMLHttpRequest)

最直接的区别:Ajax请求头会多一个x-requested-with参数,值为XMLHttpRequest

HttpRequest:请求时不会发送OPTIONS预检请求。

​ 例如:a标签的href,浏览器地址栏直接输入等方式。

XMLHttpRequest: 请求时会发送OPTIONS预检请求。

​ 例如:通过Ajax发送请求。

解决前后端分离情况下的cas统一认证跨域问题

跨域问题主要是跟CAS服务端的交互:登陆登出

解决思路: 将XMLHttpRequest转换成HttpRequest请求,不做预检。

登陆

cas client不直接跳转,改做返回需要跳转的cas统一平台认证URL

前端拿到URL后,在数据统一处理里面做拦截处理。然后window.location.href指向URL

image-20211228103351872

登出

由ajax发送到cas client的注销请求改为a标签的请求即可自动跳转至cas服务端注销,且不会发送OPTIONS预检请求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值