什么叫做 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的更多相关文章

  1. 著名ERP厂商的SSO单点登录解决方案介绍一

          SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户 ...

  2. 细说SSO单点登录

    什么是SSO? 如果你已知道,请略过本节! SSO核心意义就一句话:一处登录,处处登录:一处注销,处处注销.即:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 很多人容易把SS ...

  3. CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录

    一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...

  4. Lind.DDD.SSO单点登陆组件的使用(原创)

    回到目录 一般sso的说明 在Lind.DDD框架里,有对单点登陆的集成,原理就是各个网站去sso网站统一登陆授权,之后在sso网站将登陆的token进行存储,存储方式随你(cache,redis,m ...

  5. 可跨域的单点登录(SSO)实现方案【附.net代码】

    SSO简介 定义: 传统的单站点登录访问授权机制是:登录成功后将用户信息保存在session中,sessionId保存在cookie中,每次访问需要登录访问的资源(url)时判断当前session是否 ...

  6. 偷懒小工具 - SSO单点登录通用类(可跨域)

    写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...

  7. 【Java EE 学习 68】【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】

    单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...

  8. MachineKey 操作 之 应用集群中SSO应用生成MachineKey

    MachineKey介绍 MachineKey其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,一般情况下IIS自动默认给网站或者每一个应用生成唯一的MachineKey ...

  9. ASP.NET MVC SSO单点登录设计与实现

    实验环境配置 HOST文件配置如下: 127.0.0.1 app.com127.0.0.1 sso.com IIS配置如下: 应用程序池采用.Net Framework 4.0 注意IIS绑定的域名, ...

  10. C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享

    好久没写文章了,突然间也不知道写什么好了一样,好多人可能以为我死了,写个文章分享一下.证明一下自己还在,很好的活着吧,刷个存在感. 放弃了很多娱乐.休闲.旅游.写文章.看书.陪伴家人,静心默默的用了接 ...

随机推荐

  1. nRF Connect SDK(NCS)/Zephyr固件升级详解 – 重点讲述MCUboot和蓝牙空中升级

    如何在nRF Connect SDK(NCS)中实现蓝牙空中升级?MCUboot和B0两个Bootloader有什么区别?MCUboot升级使用的image格式是怎么样的?什么是SMP协议?CBOR编 ...

  2. css 垂直居中方法汇总

    查看原文可以有更好的排版效果哦 前言 居中是平时工作中的最常见的一种需求,各种图片居中或者各种弹窗,水平居中还好,特别是垂直居中,很多初学者表示太难写了,现在列举一些常用的方法. 实战 这里只讲述cs ...

  3. 检查浏览器支持Webp

    什么是Webp? Webp 是一种支持有损压缩和无损压缩的图片文件格式,派生自图像编码格式 VP8.根据 Google 的测试,无损压缩后的 WebP 比 PNG 文件少了 45% 的文件大小,即使这 ...

  4. 前端面试题整理——手写AJAX

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. SQL语句总结---数据库操作

    https://blog.csdn.net/hallomrzhang/article/details/85010014 数据库操作 查看所有数据库 show databases; 1 查看当前使用的数 ...

  6. 浅谈js本地图片预览

    最近在工作中遇到一个问题,就是实现一个反馈页面,这个反馈页面的元素有反馈主题.反馈类型.反馈内容.反馈人联系电话以及反馈图片.前端将这些反馈的元素POST给后台提供的接口:实现这个工作的步骤就是:页面 ...

  7. 解决PHP下载大文件失败,并限制下载速度

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...

  8. Spring-AOP动态代理技术(底层代码)

    1.JDK代理:基于接口的动态代理技术 目标对象必须有接口,目标对象有什么方法,目标接口就有什么方法, 运行期间基于接口动态生成代理对象,所以代理对象也就有目标对象同样的方法. 注意:以下代码只是底层 ...

  9. Elasticsearch 使用-安装

    Elasticsearch 使用-安装 官方网站 https://www.elastic.co/cn/elasticsearch/ 什么是 Elasticsearch? Elasticsearch 是 ...

  10. QT-守护程序

    功能:手动选择EXE文件 1.手动开启应用,关闭应用 2.选择是否自动开启应用程序 3.将应用程序名称,操作,时间记入TXT文档 涉及:文件写入操作,基本控件使用.Windows命令使用 Github ...