公司子系统整合统一登录的架构
如下图是公司的统一登录界面:
众多子系统的登录页面不再使用,所有登录走统一登录页面,登录时选择你要登录的系统,这里以我改造的安全管理系统为例。
在安全管理系统项目中加入一个整合的jar包,其实就是一个拦截器,拦截所有请求,看请求中是否有携带登录标识(此标识是包含统一登录端生成的一个唯一ID),如果没有在,则从定向到统一登录的页面。
然后在子系统的web.xml中配置这个拦截器生效。
之后每次从统一登录页面登录的时候,选择一个子系统,输入用户名和密码(用户名和密码在前台加密,同时携带的还有统一登录端生成的唯一UUID,还有一个status字段,也是一个UUID),然后(1)进入子系统的AuthoFilter拦截器,验证请求中是否有携带指定的标识,如果没有提示原因,如果有执行逻辑,拿着统一登录端的几个参数和子系统本地初始化的几个参数去(2-1)请求统一登录服务
进行授权,(其实就是获取code,然后再用code再次请求换取token,然后获取用户信息,访问子系统)在统一登录端会进行一系列验证(用户名,密码,PSID,子系统等)返回code信息,最后再(2-2)跳到子系统
再次进入子系统的过滤器,进行验证,这次code不为null,所以再去(3-1)统一登录端获取token,
服务端根据子系统的唯一标识和username,查找token,找不到则生成一个token,然后(3-2)响应给子系统
然后子系统拿到token,执行下一个过滤器。下一个过滤器会再次去验证用户名和密码
注意:这次不是去统一登录端去验证,而是去统一登录端上次保存的redis库中去验证。验证成功进行后续的系统操作。
这种就是要部署一个认证中心。
认证中心就是一个专门负责处理登录请求的独立的 Web 服务。
用户统一在认证中心进行登录,登录成功后,认证中心记录用户的登录状态,并将 Token 写入 Cookie。(注意这个 Cookie 是认证中心的,应用系统是访问不到的。)
应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,那么就将页面跳转至认证中心。由于这个操作会将认证中心的 Cookie 自动带过去,因此,认证中心能够根据 Cookie 知道用户是否已经登录过了。如果认证中心发现用户尚未登录,则返回登录页面,等待用户登录,如果发现用户已经登录过了,就不会让用户再次登录了,而是会跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统。
应用系统拿到 Token 之后,还需要向认证中心确认下 Token 的合法性,防止用户伪造。确认无误后,应用系统记录用户的登录状态,并将 Token 写入 Cookie,然后给本次访问放行。(注意这个 Cookie 是当前应用系统的,其他应用系统是访问不到的。)当用户再次访问当前应用系统时,就会自动带上这个 Token,应用系统验证 Token 发现用户已登录,于是就不会有认证中心什么事了。
这里顺便介绍两款认证中心的开源实现:
Apereo CAS 是一个企业级单点登录系统,其中 CAS 的意思是”Central Authentication Service“。它最初是耶鲁大学实验室的项目,后来转让给了 JASIG 组织,项目更名为 JASIG CAS,后来该组织并入了Apereo 基金会,项目也随之更名为 Apereo CAS。
XXL-SSO 是一个简易的单点登录系统,由大众点评工程师许雪里个人开发,代码比较简单,没有做安全控制,因而不推荐直接应用在项目中,这里列出来仅供参考。
总结:此种实现方式相对复杂,支持跨域,扩展性好,是单点登录的标准做法。
常规的是这种步骤:
用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
sso认证中心发现用户未登录,将用户引导至登录页面
用户输入用户名密码提交登录申请
sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌
sso认证中心带着令牌跳转会最初的请求地址(系统1)
系统1拿到令牌,去sso认证中心校验令牌是否有效
sso认证中心校验令牌,返回有效,注册系统1
系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
用户访问系统2的受保护资源
系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
系统2拿到令牌,去sso认证中心校验令牌是否有效
sso认证中心校验令牌,返回有效,注册系统2
系统2使用该令牌创建与用户的局部会话,返回受保护资源
公司子系统整合统一登录的架构相关推荐
- OAurh 2.0/OpenID与老系统的整合——统一登录平台
OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全.开放及简单的标准,通过这个标准,第三方无需知道用户的账号和密码,就可获取到用户的授权信息. OAuth2. ...
- CAS统一登录认证(6):SSO集成架构
cas单点登录架构的形成,理解,实践是个过程,整个实现有一定的复杂,网上的基本架构图如下: 但在实施的时候,并不一定各项技术都需要用到,比如,我的实施整理了一下,是以下改进和简化的架构: 1. 通过L ...
- django 实现统一登录(未完待续)
django 实现统一登录 前言 公司的各种运维平台.工具越来越多,搞得用户需要记住不同平台不同的密码,当然,用户可以选择各个平台都使用一个密码,奈何我身后坐着一个超烦的安全,天天瞎搞.忍无可忍,终于 ...
- Java生鲜电商平台-统一异常处理及架构实战
Java生鲜电商平台-统一异常处理及架构实战 补充说明:本文讲得比较细,所以篇幅较长. 请认真读完,希望读完后能对统一异常处理有一个清晰的认识. 背景 软件开发过程中,不可避免的是需要处理各种异常,就 ...
- Zabbix 对接 LDAP 实现用户统一登录的方法
需求 某公司环境是基于AD域来批量管理域用户的,zabbix监控平台上又要创建账号,这样非常麻烦,也不利于账号的管理,所以为了集中管理,想通过zabbix对接公司AD域用户,实现用户认证统一登录. 环 ...
- 多个系统间是怎么保证统一登录的
概念 SSO 英文全称 Single Sign On,单点登录. 在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统. 比如:淘宝网(www.taobao.com),天猫网(www.t ...
- AMD统一渲染GPU架构 历程回顾与评测
AMD统一渲染GPU架构 历程回顾与评测 前言:NVIDIA公司历经长时间酝酿的Fermi架构高端产品GTX480/GTX470发布已经结束,经历了长达一个月的忙碌,我们已经了解到了这款产品的 ...
- 整合公司 如何整合人员_需要持续整合
整合公司 如何整合人员 首先,让我们首先定义什么是持续集成. 根据维基百科,"持续集成(CI)是一种实践, 软件工程,将所有开发人员的工作副本与 每天几次共享主线.". 这基本上意 ...
- 统一登录passport介绍
前一段时间,因为在开发中使用到公司的统一登录平台passport,所以就自己找了很多资料,详细的学习了一下它们的原理以及实现过程,这里就着重分享一下"跨域共享cookie和跨域共享sessi ...
最新文章
- 【网络协议】TCP分段与IP分片
- Python的进度条的制作
- 网络推广运营期间如何提升用户增长水平促进企业稳步推进网络推广
- python pandas读取excel-Python使用Pandas读写EXCEL文件教程
- 更换group.id时kafka从哪开始消费
- vscode + plantuml实现uml的编写
- 结对开发——环形一维数组求最大子数组和
- jquery ajax json传递数组,jQuery ajax 传递JSON数组到Spring Controller
- Layui的一点小理解(上)
- STM32建好的工程为啥下载不进去程序
- su root无法切换到root用户
- 【鸿蒙热】下的冷思考
- SQLite不同插入方法的效率对比测试
- SharePlex数据库复制解决方案
- Linux快速入门教程
- Final Scrum
- 关于word2010指定位置插入页码及三线表格绘制问题
- Markdown 符号表示
- Android 高效安全加载图片
- 营销型网站文案写作的8个技巧
热门文章
- 自己创作的一个简单的蠕虫病毒
- oce专项认证 oracle_官方解密Oracle 数据库认证
- 计算机专业就业率最低: 正规军干不过游击队
- 毫米波点云雷达 论文阅读 | 3DRIMR, IPCCC 2021
- 惠普linux进入bios设置u盘启动,惠普bios,小编教你惠普bios怎么设置u盘启动
- 日期转换(西历转和历)
- 很多句话让XueTr卸载不了我们的驱动(ObjectType HOOK)
- c4droid c4droid 安装 使用 教程
- 硕士研究生毕业答辩ppt攻略
- 都说测试行业内卷严重,环境恶劣,那么未来测试行业会如何发展?