公司项目的登录系统用到了单点登录技术,面试的时候被问到了,现在做个总结
谈谈单点登录
单点登录技术简单说,就是避免用户访问不同子系统二次登录的问题,尤其是大型项目中,业务子系统通常都是根据业务模块单独部署服务器的。
对于同一个系统下访问,或者同源系统下的访问,使用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)种进浏览器。子系统拿到会话凭证后委托认证服务器进行验证,一旦通过则子系统为当前用户保存会话信息。
当用户访问下一个子系统时,(以单
本文详细介绍了单点登录(SSO)的概念,强调了其在大型项目中的重要性。通过讨论同源策略与cookie的限制,阐述了跨域单点登录的两种解决方案:扩大cookie范围或使用JWT。重点介绍了项目中采用的CAS Server/Client模式,详细描述了登录、登出流程以及高可用性的实现,确保了认证信息的安全性。
最低0.47元/天 解锁文章

1625

被折叠的 条评论
为什么被折叠?



