淘宝网登陆(淘宝网登录入口)
文章目录[隐藏]
- 一.单点登录概念
- 二、CAS的原理
- 三.认证过程
- A.第一次访问受限资源时
- 第二次访问系统
- C.第一次访问其他系统
- 四、淘宝单点登录系统架构的设计与实现
- 一、同步登录状态
- B.检查登录状态
- C.核实账单
- 动词 (verb的缩写)SSO实战
淘宝登录(淘宝登录入口)021-07-30 13: 54熬夜码农
单点登录被定义为在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
一.单点登录概念
二、CAS的原理
三.认证过程
A.第一次访问受限资源时
第二次访问系统
C.第一次访问其他系统
四、淘宝单点登录系统架构的设计与实现
一、同步登录状态
B.检查登录状态
C.核实账单
动词 (verb的缩写)SSO实战
一.单点登录概念
在单个web系统中,客户端和服务器只建立一个会话,成功登录后只需要写一个Cookie。每个请求都携带Cookie,服务器只验证Cookie是否有效,以便判断是否登录。
随着业务的增长,出现了其他应用系统,每个系统只维护自己的会话,这将导致以下问题:
每个系统都要维护一套认证逻辑,导致冗余;
跨系统后,认证信息会失效,这就需要各系统之间的兼容性。
因此,需要对常用模块进行抽象,形成一个通用的认证系统,承担所有业务系统的登录认证功能,即单点登录(SSO)系统。
对认证系统进行抽象后,单点登录系统需要完成两个主要任务,即维护全局会话和维护本地会话。客户端与业务系统之间有一个本地会话,与单点登录系统之间有一个全局会话。单点登录系统分为两部分,单点登录服务器和单点登录客户端。服务器是单点登录认证系统。客户端将被集成到业务系统中,并负责添加、删除和验证本地会话。
二、CAS的原理
基本上所有的SSO系统都可以向CAS学习。
CAS的整体架构分为客户端和服务器端。客户端支持多种服务器应用,也支持多种语言,包括GO、Python、PHP和Java。可以看出,它支持市场上的主要语言。
服务器的技术实现首先是Spring MVC+Spring Web Flow,主要用于组件的串行执行,其次是票据组件、认证组件、认证组件支持的存储容器,可以是LDAP、数据库、活动目录。基本上,身份验证的思想是关系数据库与Redis或Memcached相结合。
三.认证过程
A.第一次访问受限资源时
第一次访问时,重定向到SSO服务器登录页面,将登录表单返回浏览器,用户提交用户名和密码,SSO服务器验证,用票证重定向成功后,SSO客户端、客户端和SSO验证票证有效性,返回验证信息,SSO客户端写入本地会话cookie,重定向回原地址,业务系统返回资源。
如果登录,直接跳转,即执行:
response.sendRedirect(urlToRedirectTo);
第二次访问系统
第二次访问系统时,域名下会有上一步写的cookie,请求系统时会携带cookie,所以所有过滤器都不会拦截请求,直接返回资源。
C.第一次访问其他系统
系统域名下没有本地会话,所以重定向到SSO服务器,SSO服务器会发现这个客户端已经登录,生成所有的票证,客户端和SSO验证票证的有效性并返回验证信息,SSO客户端写入本地会话cookie,重定向回原地址,业务系统返回资源。
四、淘宝单点登录系统架构的设计与实现
淘宝的SSO系统颇具创新。除了检查登录状态模块,还增加了同步登录状态模块,使得电子商务项目在SSO中灵活。
一、同步登录状态
在静态页面中,后台数据将被异步请求,然后被同步登录状态的单点登录客户端过滤器截获。如果需要同步登录状态,过滤器会重定向到login.taobao.jump界面,无论用户是否登录,都会重定向回SSO客户端界面,在以下两种情况下会发生跳转:
本地会话的Cookie不存在。
Cookie存在但无效,全局会话有效。
除了令牌参数之外,跳转还将携带源地址rederectUrl。
B.检查登录状态
当用户请求需要登录的数据资源时,它将被检查登录状态的过滤器拦截。出现以下两种情况:
如果没有登录,同步跳转请求将被直接重定向到登录页面。
异步Ajax请求将直接返回登录状态、rederectUrl和loginUrl,并跳转到JavaScript控制下的登录地址。
C.核实账单
如果单点登录服务器登录成功,会将令牌请求携带回单点登录客户端,客户端会验证令牌的过滤拦截请求,并与单点登录服务器验证令牌的有效性。如果是,用户的基本信息、cookie值等。,所有cookie值都由SSO服务器发送。
动词 (verb的缩写)SSO实战
目标:基于令牌并支持跨顶级域的单点登录系统。
涉及系统:
登录中心:SSO系统,负责处理所有SSO逻辑,域名为localhost:6061。
服务A:特定的服务系统需要通过SSO系统登录,域名假设为localhost:6060。
服务B:特定的服务系统需要通过SSO系统登录,域名假设为localhost:7070。
对于业务系统A或者业务系统B,用户可以通过登录中心进行登录,用户只需要登录业务系统A或者业务系统B中的任意一个,其他业务系统都可以从登录