项目中用到的单点登录技术

本文详细介绍了单点登录(SSO)的概念,强调了其在大型项目中的重要性。通过讨论同源策略与cookie的限制,阐述了跨域单点登录的两种解决方案:扩大cookie范围或使用JWT。重点介绍了项目中采用的CAS Server/Client模式,详细描述了登录、登出流程以及高可用性的实现,确保了认证信息的安全性。
摘要由CSDN通过智能技术生成


公司项目的登录系统用到了单点登录技术,面试的时候被问到了,现在做个总结

谈谈单点登录

单点登录技术简单说,就是避免用户访问不同子系统二次登录的问题,尤其是大型项目中,业务子系统通常都是根据业务模块单独部署服务器的。
对于同一个系统下访问,或者同源系统下的访问,使用cookie传递认证信息就可以实现会话信息的共享,从而实现单点登录。

同源策略是浏览器产品的一种约定,是一种安全策略,如果两个页面具有相同的协议(protocol)域名(domain)端口号(port),那么就说这两个页面是同源的。例如http://www.abc.com/a.txt和http://www.abc.com/b.txt。非同源的cookie是隔离的。

对于父域相同,子域不同的情况,保存(种下)cookie的时候可以设置domain值,设置为父域的范围,来到达同一父域下的信息共享。(例如picture.abc和main.abc)
而对于跨域的单点登录,也可以按照上面的思路去思考,主要有两种解决思路:
【1】继续扩大“cookie”的范围,直接传递凭证
cookie也不过是一个http下标准的字段,而在我们自己实现的系统中,也可以约定一个协议或者一个字段,我们让它每次都被浏览器携带过去,我们就约定从这个字段去读取认证信息。这就是一个token的思想。就以token的一种实现 json web token举例,JWT推荐使用authorization这个头部携带令牌信息,这样就不会因为浏览器对cookie的约束而产生跨域问题。

服务器需要做的就是为用户签发token、保存私钥,一方面用于给token设置数字签名,另一方面用于拦截请求并验证token。

【2】搭建一个受信任的中间人服务器,即认证中心服务器
例如用户访问某一个子系统,然后被重定向为认证服务器,由于用户没有进行任何登录,认证服务器将用户转发到登录页面。用户完成登录后,认证服务器为用户保存登录大令牌(票根),并且会构造一个重定向的http响应,这个响应中不但包含服务器为浏览器签发的会话凭证,而且将一个小令牌(cookie)种进浏览器。子系统拿到会话凭证后委托认证服务器进行验证,一旦通过则子系统为当前用户保存会话信息。
当用户访问下一个子系统时,(以单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值