什么是单点登录,如何实现单点登录
什么是单点登录
单点登录(Single Sign On),简称SSO,定义是在多个应用系统中,用户只需登录一次就可以访问所有相互信任的应用系统。
SSO一般都需要一个独立的统一认证中心,子系统登录的时候均需要跳转到统一认证中心,当一个系统登录成功后,再访问其他子系统时会自动登录。
比如淘宝和天猫,用户登录淘宝后,再打开天猫会自动登录了天猫,这种就属于单点登录。
流程
- 用户访问系统的受保护资源,系统A发现用户未登录,跳转至统一认证中心,并将自己的地址作为参数
- 统一认证中心发现用户未登录,将用户引导至登录页面
- 用户输入登录信息提交登录申请
- 统一认证中心校验用户登录信息,创建用户与统一认证中心之间的会话,称为全局会话,同时创建授权令牌
- 统一认证中心带着令牌跳转回最初的请求地址(系统A)
- 系统拿到令牌,去统一认证中心校验令牌是否有效
- 统一认证中心校验令牌,返回有效,注册系统A
- 系统A使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
- 用户访问系统B的受保护资源
- 系统B发现用户未登录,跳转至统一认证中心,并将自己的地址作为参数
- 统一认证中心发现用户已登录,跳转回系统B的地址,并附上令牌
- 系统B拿到令牌,去统一认证中心校验令牌是否有效
- 统一认证中心校验令牌,返回有效,注册系统B
- 系统B使用该令牌创建与用户的局部会话,返回受保护资源
用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与统一认证中心建立的会话称为全局会话
用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过统一认证中心
全局会话与局部会话有如下约束关系:
- 局部会话存在,全局会话一定存在
- 全局会话存在,局部会话不一定存在
- 全局会话销毁,局部会话必须销毁
如何实现
- 部署一个统一认证中心,用于专门处理登录请求的独立的 Web 服务
- 用户统一在统一认证中心进行登录,登录成功后,统一认证中心记录用户的登录状态,并将 token 写入 Cookie(这里的Cookie 是统一认证中心的,应用系统是访问不到的)
- 应用系统检查当前请求有没有 Token,如果没有,说明用户在当前系统中尚未登录,就将页面跳转至统一认证中心进行登录
- 如果统一认证中心发现用户尚未登录,则返回登录页面,等待用户登录
- 如果发现用户已经登录过了,直接跳转回目标 URL ,并在跳转前生成一个 Token,拼接在目标 URL 的后面,回传给目标应用系统
- 应用系统拿到 Token 之后,需要向统一认证中心确认下 Token 的合法性,防止用户伪造。确认无误后,应用系统记录用户的登录状态,并将 Token 写入 Cookie(这个 Cookie 是当前应用系统的),然后给本次访问放行。
- 用户再次访问当前应用系统时,就会自动带上这个 Token,应用系统验证 Token 发现用户已登录,这里就不涉及统一认证中心了
什么是单点登录,如何实现单点登录相关推荐
- java php 单点登陆,cas实现单点登录,登出(java跟php客户端)(转)
cas实现单点登录,登出(java跟php客户端)(转)cas实现单点登录,登出(java和php客户端) (转) 最近项目中需要做单点登录,客户端包含java和php,java有几个应用程序,php ...
- javaweb实现单点登录,防止重复登录,获取sessionid,对session及时销毁回收,只允许一个用户登录,结合struts2实现
首先我们目的是实现一个单点登录,即只允许单个账户单个登录. 实现异地与同地登录判断 要将先登录的用户强制下线.不免用到session. 单点登录的最大难题:已经登录且重复登录的用户的session怎么 ...
- shiro单点登录原理_SSO单点登录三种情况的实现方式详解
单点登录(SSO--Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统--百度经验.百度知道.百度文库等 ...
- php tipask yii 单点登录_php实现单点登录实例
这是一个简单版的php单点登录概述,如果需要实现复杂的需自己,编写复杂的ticket加解密算法. 先看张图. sso系统,http://sso.yxh.com <?phpecho "s ...
- SSO单点登录之同域登录的实现
单点登录解决的问题 在同一个公司开发的两个子项目时,如果就是简单的登录,我们通常就是在一个项目的pc端中进行登录,然后在另一个子项目pc端中又要进行登录,也就是说传统的登录方式是相互独立的:而这样会出 ...
- 谷粒商城笔记+踩坑(17)——【认证模块】登录,用户名密码登录+微博社交登录+SpringSession+xxl-sso单点登录
导航: 谷粒商城笔记+踩坑汇总篇 目录 5. 用户名密码登录 5.1[认证模块]登录业务 5.1.1 模型类,接收用户名密码 5.1.2 feign客户端新增登录功能 5.1.3 LoginContr ...
- 手撸SSO单点登录(五)登录验证-OA系统页面刷新或者跳转新OA系统页面
目标 上一章节手撸SSO单点登录(四)登录验证-首次登录已经成功登陆并且跳转至OA系统,当OA系统刷新,或者OA系统打开其他菜单是怎么实现无需登陆,直接验证通过,跳转页面或者刷新页面. 视频详细讲解 ...
- open edx 实现第三方登录-shibboleth单点登录
open edx 实现第三方登录-shibboleth单点登录 在open edx端的配置参考官方文档:http://edx.readthedocs.io/projects/edx-installin ...
- Yale CAS单点(不强制)登录问题
在单点登录时,如果A应用已登录,访问B应用时. Yale CAS的单点登录机制是: 用户访问单点登录客户端时,如果session.getAttribute("edu.yale.its.tp. ...
- 单点登录系统【All登录系统优化】
文章目录 单点登陆系统简介 单点登陆系统概述 单点登陆系统解决方案设计 单点登陆系统初步设计 服务设计 服务流程 项目结构设计 sso-system基础服务工程实现 业务描述 数据库表结构设计 一.p ...
最新文章
- Promise 解析
- 量子物理 詹班 计算机,6量子物理作业答案
- 【运营】“顶级运营”最强速成攻略!目前国内不超过200人!
- [云炬python3玩转机器学习] 5-6最好的衡量线性回归法的指标: R Squared
- matlab 规范,matlab-代码-规范
- 深入理解java虚拟机--线程安全与锁优化
- 计组之数据运算:13、加法器优化
- 使用proguard混淆java web项目代码
- 战神级CTO直招产品技术小鲜肉,“悦家”团队带你玩转家装O2O
- 发票打印JAVA是什么_如何使用蓝牙热敏打印机打印发票收据
- fcq java_Java设计模式百例 - 解释器模式
- 光固化3D打印 一
- MUI框架的基本使用
- js表单提交 php,提交表单:js中form表单是如何提交的
- C语言两个文本相似度的算法,两个文本相似度算法实现和对比
- ylinux系统找到软件_你的 linux 上都有什么值得推荐的软件?
- 狐妖小红娘服务器维护,3月7游戏更新公告 狐妖小红娘版本上线
- chrome浏览器抓包工具介绍(2022,12,27)
- 不知明镜里,何处得秋霜
- MySQL系列:innodb源码分析之表空间管理