什么是单点登录?

单点登录(Single Sign On,简称 SSO)简单来说就是用户只需在一处登录,不用在其他多系统环境下重复登录。用户的一次登录就能得到其他所有系统的信任。

为什么需要单点登录
单点登录在大型网站应用频繁,比如阿里旗下有淘宝、天猫等,用户的一次操作或交易就可能涉及到其他众多子系统的协作。使用单点登录就可以让用户登录一次,免去频繁登录授权的苦恼。

早期的单系统登录
用户在登录界面输入自己的用户名和密码之后,浏览器向服务器发送登录请求,服务器验证通过用户信息后放入 session,并将 sessionId 放入 Cookie,随后返回给浏览器。登录过后的请求都将在 Cookie 中携带 sessionId,服务器通过 sessionId 获取用户信息,最后返回响应信息。

单点登录的实现方式
如果一处登录的 session 能够共享,那么多个应用系统之间的登录状态也可以共享了。所以单点登录的关键在于,如何让 sessionId (或 Token)在多个域中共享。

同域下的单点登录
一个企业一般情况下只有一个域名,子系统使用二级域名。比如百度搜索是一级域名:https://www.baidu.com,贴吧使用的是二级域名https://tieba.baidu.com。如果我们要实现单点登录,可以将 Cookie 的域设置为顶域,即 https://www.baidu.com,这样其余的子域系统都可以访问顶域的 Cookie 了。

当然,上面做法缺点也很明显,它不支持跨域。这还不是真正的单点登录。

不同域下的单点登录
要实现不同域下的单点登录, 我们需要一个 SSO 认证中心来专门处理登录请求。所有的请求(登录、退出、获取用户信息、当前用户状态)都请求 SSO 系统,SSO 系统维护用户信息。流程如下:

image.png

首次登录时:

  • 用户登录某应用网站,浏览器将用户的登录重定向到 SSO 认证中心
  • SSO 进行检查和校验是否有现有的 SSO Cookie
  • 由于首次登录,并且用户浏览器不存在 SSO Cookie,因此请求用户使用 SSO 配置的连接登录。
  • 用户登录后,将设置 SSO Cookie,用户将被重定向到应用程序,并使用包含用户相关的身份信息的令牌(Token)

后续登录中:

  • 应用网站将用户重定向到 SSO 认证中心

  • SSO 认证中心 检查是否存在现有的 SSO Cookie

  • SSO 认证中心验证 SSO Cookie 是否有效

    • 无效,用户被重定向到应用网站的登录页面

    • 有效,用户将被重定向到应用程序,并带有包含用户相关身份信息的令牌(Token)。

    • 其实,SSO 认证中心相当于一个登录中介,它统一管理用户在多系统下的登录操作。

使用 SSO 的好处就是简化登录流程,用户友好且安全。
在多系统下的登录操作。

使用 SSO 的好处就是简化登录流程,用户友好且安全。

相关推荐

  1. 什么登录以及如何实现

    2024-03-23 06:04:04       47 阅读
  2. ca登录

    2024-03-23 06:04:04       68 阅读
  3. sso登录

    2024-03-23 06:04:04       33 阅读
  4. 登录设备登录

    2024-03-23 06:04:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 06:04:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 06:04:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 06:04:04       82 阅读
  4. Python语言-面向对象

    2024-03-23 06:04:04       91 阅读

热门阅读

  1. RK3568基于openHarmony3.2版本之GT911触摸屏调试成功

    2024-03-23 06:04:04       113 阅读
  2. OpenCV基于边缘的分割详解

    2024-03-23 06:04:04       40 阅读
  3. npm常用命令

    2024-03-23 06:04:04       47 阅读
  4. Kafka批量消费

    2024-03-23 06:04:04       39 阅读
  5. Node.js Express

    2024-03-23 06:04:04       40 阅读
  6. python loguru 日志数据代码模块+飞书消息通知

    2024-03-23 06:04:04       44 阅读
  7. 设计模式(行为型设计模式——策略模式)

    2024-03-23 06:04:04       43 阅读
  8. vue 导出页面内容为word文件

    2024-03-23 06:04:04       37 阅读