什么是单点登录?

单点登录(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 的好处就是简化登录流程,用户友好且安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE 初阶篇-深入了解进程与线程(常见的面试题:进程与线程的区别)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 进程概述 2.0 线程概述 2.1 多线程概述 3.0 常见的面试题:谈谈进程与线程的区别 4.0 Java 实现多线程的常见方法 4.1 实现多线程方法 - 继承 Thread 类…

理解文件操作

1. 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化…

Visual Studio 插件 AnAPI++ for VS 2022

Anmial API abbreviation AnAPIis an automatically generated WebAPI project that has encapsulated Jwt Oauth2 token authentication, SqlSugar, Swagger, Nlog, Cross domain technologies, and supports Net6 and above versions Anmial API缩写AnAPI是一个自动生成的Web…

基于SpringBoot和HeatMap的全球地震热力图可视化实践

目录 前言 一、关于热力图 1、HeatMap简介 2、属性和方法介绍 二、全球地震热力图反演 1、地震信息查询开发 2、前端地图开发 三、地震带反演成果 1、三大地震带反演 2、地震区域分析 总结 前言 众所周知,全球的地震带主要可以分为三处地震带——环太平洋地…

60、服务攻防——中间件安全CVE复现weblogicJenkinsGlassFish

文章目录 weblogicJbossJenkinsGlassFish weblogic 默认端口:7001,历史漏洞:CVE_2017_3506、CVE_2018_2893、CVE_2018_3245、CVE_2020_14882、CVE_2021_2394 Jboss 历史漏洞:CVE-2017-12149、CVE-2017-7504 Jenkins GlassFis…

C#使用ASP.NET Core Razor Pages构建网站(三)

上一篇文章了解Razor Pages 链接:C#使用ASP.NET Core Razor Pages构建网站(二) 接下来继续了解ASP.NET Core Razor Pages构建网站的后续内容 一、将Entity Framework Core配置为服务 要在 ASP.NET Core 项目中配置 Entity Framework Core 服…

使用jupyter-Python进行模拟股票分析

tushare财经数据接口包 pip install tushare作用:提供相关指定的财经数据 需求:股票分析 使用tushare包获取某股票的历史行情数据 输出该股票所有收盘比开盘上涨3%以上的日期 输出该股票所有开盘比前日收盘跌幅超过2%的日期 假如我从2015年1月1日开…

【Caddy】Caddy实践1——此网站无法提供安全连接

背景:卸载 最近安装Caddy在另外一个机器上出现了错误,执行步骤如下: 步骤一:添加 Caddy 软件源并安装 执行以下命令添加 Caddy 的软件源并安装: sudo apt install -y debian-keyring debian-archive-keyring apt-t…

哨兵位、链表的链接

哨兵位: 通俗的话讲就是额外开辟一块空间,指向链表的头部。 合并两个有序链表 已解答 简单 相关标签 相关企业 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入&#…

java入门学习

程序员必备:常见算法与应用综述 算法是计算机科学的核心,是解决问题的关键。在程序员的日常工作中,算法无处不在。本文将以“程序员常用的几种算法”为主题,从多个维度介绍程序员常用的算法,并分析其适用场景、优缺点…

在 CentOS 7 上编译安装 Nginx 1.18

1. 安装依赖包 首先,安装 Nginx 所需的基本依赖包: yum install -y gcc gcc-c make automake autoconf pcre-devel zlib-devel openssl-devel2. 下载 Nginx 源代码 wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -xzvf nginx-1.18.0.tar.g…

Jupyter R绘图 汉字显示乱码的解决办法

1.Jupyte中,R绘图,汉字显示乱码 2.如何解决? (1)R中安装showtext 登录linux服务器 #R > install.packages(“showtext”) … 出错 (2)退出R,安装freetype-config #apt install libfreetype6-dev 出错 (3)进入R&…

学习人工智能:Attention Is All You Need-2-Transformer模型;Attention机制;位置编码

3.2 注意力机制Attention 注意力函数可以描述为将查询和一组键值对映射到输出的过程,其中查询、键、值和输出都是向量。输出被计算为值的加权和,其中每个值的权重由查询与相应键的兼容性函数计算得出。 3.2.1 缩放点积注意力 Scaled Dot-Product Attenti…

5.81 BCC工具之tcpconnlat.py解读

一,工具简介 tcpconnlat工具追踪执行活动TCP连接的内核函数(例如,通过connect()系统调用),并显示本地测量的连接延迟(时间):从发送SYN到响应数据包的时间。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from bcc import BPF from soc…

shentou思路流程

信息收集: 1、获取域名whois信息也就是所谓的资产收集 2、服务器子域名、旁站、c段查询 3、服务器操作系统类型、版本、补丁状况、开放端口:22 ssh 80 web 445 3389.。。 4、web中间件类型、版本、网站目录结构、使用的waf等设备 5、数据库类型、版…

Linux运维_Bash脚本_构建安装MySQL-8.0.18

Linux运维_Bash脚本_构建安装MySQL-8.0.18 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux …

鸿蒙Harmony应用开发—ArkTS-@AnimatableExtend装饰器:定义可动画属性

AnimatableExtend装饰器用于自定义可动画的属性方法,在这个属性方法中修改组件不可动画的属性。在动画执行过程时,通过逐帧回调函数修改不可动画属性值,让不可动画属性也能实现动画效果。 可动画属性:如果一个属性方法在animation…

【C语言基础篇】内存处理函数(二)memove的介绍及模拟实现

个人主页: 倔强的石头的博客 系列专栏 :C语言指南 C语言刷题系列 待完善补充

无插件网页视频播放器,支持图像绘制(包含方格子、方框等),支持音视频播放、支持录像截图,提供源码下载

前言 本播放器内部采用jessibuca插件接口,支持录像、截图、音视频播放等功能。播放器播放基于ws流,图像绘制操作:1)支持绘制方格子,用于监控移动检测画框;2)支持绘制不透明方框,用于…

macOS下Java应用的打包和安装程序制作

文章目录 macOS应用程序结构Java应用打包JavaAppLauncherjpackage其它相关JDK命令附录JavaAppLauncher源码链接macOS应用程序结构 macOS通常以dmg或pkg作为软件发行包,安装到/Applications下后,结构比较统一。 info.plist里的CFBundleExecutable字段可以指定入口,如果不指定…