标签:单点 登录 系统 用户 认证 Token Ticket
1 背景
公司系统众多,如客户关系管理系统(CRM)、权限管理系统(PMS)、内容管理系统(CMS)、及报表系统(Report)等,每个系统拥有独立的用户认证流程,同一用户使用不同系统时均需要在各自系统中完成登入或登出。系统与系统之间进行跳转时,是跳转到对应系统的登录页,重新登录,而不是依据已认证的用户直接进入目标系统。
2 多系统独立用户认证
系统与系统之间用户认证体系相互独立,无法进行统一授权与管理,系统与系统之间的跳转只是页面的跳转,主要弊端如下:
(1)降低用户工作效率。多系统重复登录,账密不同,需要记住多个账密,忘记密码需要找运维支持解决,降低工作效率。
(2)加大开发与维护工作量。每个系统维护各自的用户认证,增加开发工作量以及维护工作量。
(3)用户体验不好。系统之间跳转需要重新登录,退出时,每个系统均需登出,操作繁琐,用户体验差。
目前用户访问各系统的过程如图2.1所示。

由图2.1可知,用户使用某个系统功能时,需要在各自的系统中进行登入和登出,各个系统的登录权限彼此独立。虽然各系统都是使用域账号作为登录账号,但是各系统的登入和登出仍需要在各自系统中完成。
3 单点登录
为解决多系统间独立认证存在的弊端,拟采用单点登录方案。单点登录(Single Sign On,SSO)指多系统应用中,用户登录一个系统,即可得到所有系统的授权(该用户有权限访问的系统),使用其他系统时无需再次登录,实现一次登录,多系统使用。单点登录包括登入和登出,其中,登入从认证中心获取认证Token和登录状态Ticket,Token即用户授权令牌,Ticket为用户登录态令牌,判断用户是否处于登录状态,各系统会对Token和Ticket做校验,一方面判断用户登录状态,一方面校验用户权限(如菜单权限、数据权限)。单点登录流程如图3.1所示。

由图3.1可知,单点登录涉及三个重要过程,第一个是初次登入,第二个是系统间跳转,第三个是登出。
3.1 登入
即初次使用系统进行用户验证,流程描述如下:
(1)用户M在当前系统A使用用户名和密码进行登入,向SSO系统发送请求,获取认证Token和Ticket。
(2)用户获取Token和Ticket向当前系统发送请求,获取授权的数据,同时系统A缓存Token和Ticket(设定有效期)。
(3)用户M继续访问系统A时,先在系统A中进行认证,若Token和Ticket过期则向SSO进行认证,获取授权的数据。
3.2 跳转
即系统间切换,如系统A跳转到系统B,流程描述如下:
(1)由系统A跳转到系统B时,用户M携带Token和Ticket,向SSO发起认证请求,授权成功后,系统B缓存Token和Ticket(设置有效期),用户获取授权的数据。
(2)用户M继续访问系统B时,先在系统B中进行认证,若Token和Ticket过期则向SSO进行认证,获取授权的数据。
3.3 登出
即通过某一系统退出登录状态,流程描述如下:
(1)用户在任意系统进行登出,清除当前系统缓存的Token和Ticket以及SSO的Token和Ticket。
(2)其他系统缓存的Token和Ticket会在过期后自动清除(如果考虑系统安全性,缓存Token和Ticket有效期设置10秒~1分钟,或者不在独立系统中缓存Token和Ticket,或者前端控制清除Token和Ticket,保证请求时Token和Ticket为空)。
4 最终效果
使用单点登录,实现一次登入,多系统使用,系统间联动效果如图4.1所示。

标签:单点,登录,系统,用户,认证,Token,Ticket 来源: https://blog.csdn.net/Xin_101/article/details/114606992
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
