什么叫做 SSO
什么叫做 SSO
本文写于 2020 年 12 月 8 日
SSO 的全称叫做 Single Sign On,意味「单点登录」。
何为单点登录?就是你希望自己的两个网站,可以做到:一个网站登录了,另一个就不需要再次登陆了。例如淘宝和天猫,你只需要登陆一次即可。
用专业一点的话来讲,即:在多个系统中,用户只需一次登录,各个系统即可感知该用户已经登录。
单系统的登陆
HTTP 是一个无状态的协议,也就是服务器压根儿不知道你是否登陆了。因此我们需要给用户发一个“通行证”,也就是 Cookie,用户每次都会带上 Cookie 让服务器得以确认一些信息。通常我们会在服务器维护一个 Session 对象,里面存了登陆用户的 SessionId,当用户退出登陆后就移除 Session 对象中的对应 Id。
- 登录: 将用户信息保存在 Session 对象中。
- 如果在 Session 对象中能查到,说明已经登录。
- 如果在 Session 对象中查不到,说明没登录(或者已经退出了登录)。
- 退出登录: 从 Session 中删除用户的信息。
- 关闭重新打开浏览器后还能保持登录: 使用 Cookie 来达成该功能。
多系统登陆
Session 不共享
上面的方法在单系统下是没有问题的,但是如果是多系统呢?多系统的 Session 很可能是不共享的呀。
那我们就得做出修改了,首先我们得将 SSO 单独做一个系统,其他的子系统登陆的时候请求 SSO 系统进行登陆。
- SSO 系统生成一个 token,将用户信息存起来,并且设置一个过期时间;
- 其他系统登陆时请求 SSO,SSO 系统返回 token,将其写入 cookie 中;
- 每次请求时,前端会带上 cookie,拦截器得到了 token 之后,就能判断其是否登陆了。
Cookie 无法跨域
但是,cookie 不能跨域呀。Session 不能共享的问题解决了,cookie 的问题呢?
有三种解决方案:
- 服务端将 Cookie 写到客户端后,客户端对 Cookie 进行解析,将 Token 解析出来,此后请求都把这个 Token 带上就行了
- 多个域名共享 Cookie,在写到客户端的时候设置 Cookie 的 domain
- 将 Token 保存在 SessionStorage 中(不依赖 Cookie 就没有跨域的问题了)
(完)
什么叫做 SSO的更多相关文章
- 著名ERP厂商的SSO单点登录解决方案介绍一
SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户 ...
- 细说SSO单点登录
什么是SSO? 如果你已知道,请略过本节! SSO核心意义就一句话:一处登录,处处登录:一处注销,处处注销.即:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 很多人容易把SS ...
- CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录
一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...
- Lind.DDD.SSO单点登陆组件的使用(原创)
回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...
- 可跨域的单点登录(SSO)实现方案【附.net代码】
SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否 ...
- 偷懒小工具 - SSO单点登录通用类(可跨域)
写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...
- 【Java EE 学习 68】【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
- MachineKey 操作 之 应用集群中SSO应用生成MachineKey
MachineKey介绍 MachineKey其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,一般情况下IIS自动默认给网站或者每一个应用生成唯一的MachineKey ...
- ASP.NET MVC SSO单点登录设计与实现
实验环境配置 HOST文件配置如下: 127.0.0.1 app.com127.0.0.1 sso.com IIS配置如下: 应用程序池采用.Net Framework 4.0 注意IIS绑定的域名, ...
- C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享
好久没写文章了,突然间也不知道写什么好了一样,好多人可能以为我死了,写个文章分享一下.证明一下自己还在,很好的活着吧,刷个存在感. 放弃了很多娱乐.休闲.旅游.写文章.看书.陪伴家人,静心默默的用了接 ...
随机推荐
- WebSQL是什么?
WebSQL是客户浏览器端的结构化的关系数据库.这是浏览器内部的本地RDBMS,你可以在这个本地RDBMS上执行SQL查询.
- 使用salt-cloud创建openstack虚拟机
salt-cloud也是基于openstack来做的,它可以支持多种云的使用.比如:Aliyun.Azure.DigitalOcean.EC2.Google Compute Engine.HP Clo ...
- MATLAB设计模糊控制器并用simulink仿真
一.设计模糊控制器1.1 创建项目文件夹在此路径如图 1.2 打开MATLAB打开MATLAB R2012a切换当前目录为上一步路径,如图 1.3 设计模糊控制器打开模糊控制器设计对话框 根据模糊控制 ...
- Mac 安装WordPress
Mac 安装WordPress 一.环境要求 PHP 5.2.4或更新版本 MySQL 5.0或更新版本 WebServer(可以选择Apache.nginx等支持PHP的,这里我选择Apache) ...
- web前端教程《每日一题》(1-99)完结
第1期(2016年4月6日): (1)js中关闭当前窗口的方法是:window.close(); 第2期(2016年4月7日): (1)js中使字符串中的字符变为小写的方法是:toLowerCase方 ...
- Unity用Input.touches实现手机端多点触控
多点触控的方法,两边的触控互不干扰: 主要采用Input.touches的相关属性进行操作: 而采用IPointerDrag接口会造成两个drag的相互干扰: 代码如下: using System.C ...
- 惠普电脑win10系统中WLAN不见了
原文链接:笔记本电脑win10系统中WLAN不见了 怎么解决? - 知乎 (zhihu.com)
- es6语法之模版字符串
//es6语法之`${}`以及vue语法 `${ }` (模版字符串)const name = '小缘' const age = 14 console.info(`大家好,我叫${name},今年${ ...
- springboot+springsecurity+mybatis plus之用户认证
一.权限管理的概念 另一个安全框架shiro:shiro之权限管理的描述 导入常用坐标 <dependency> <groupId>org.springframework.bo ...
- springboot集成spring security安全框架入门篇
一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...