单点登录最全详解,建议收藏!

2024-08-29 15:20

本文主要是介绍单点登录最全详解,建议收藏!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单点登录(SSO)的核心在于:集中式的认证服务器(如 :CAS Server)管理用户身份,并通过票据机制在不同应用之间共享认证信息。

单点登录

单点登录全程是Single Sign On,简称 ”SSO“,是一种认证机制,通过一次性验证用户身份,提供对多个系统的访问。

图片

图片

举一个例子,比如:阿里集团有多个网站,比如:淘宝、天猫........等等,如下图所示:

图片

图片

单点登录,就在淘宝、天猫、聚划算...等的最外面,也就是说用户登录任何一个系统,剩余系统都可以登录。

也就说:只需一次登录便,可访问所有这些系统,而无需在每个系统中重复登录。

所以,单点登录(SSO), 极大地简化了用户的认证过程,提升了用户体验。

而且,通过统一的身份认证,可以更好地控制、和审计用户的访问行为,减少密码泄露的风险。

单点登录实现原理

从上面知道了单点登录的价值,下面如果是你,你应该怎么来"实现单点登录呢"?

单点登录实现,如下图所示:

图片

图片

单点登录通常通过,以下步骤来实现:

Step 1: 用户访问应用A

比如:用户尝试访问系统、或应用 A。

比如:用户试图访问受保护资源,(例如:https://app.mikechen.cc/dashboard),该资源要求用户进行身份验证。

Step 2: 重定向到认证服务器

应用 A 检查用户是否已登录,如果没有登录,应用 A 会将用户重定向到, SSO 认证服务器。

比如:CAS客户端,会将用户的浏览器重定向到CAS服务器的登录URL。

比如:https://cas.mikechen.cc/login?service=https://app.mikechen.cc/dashboard。

如下图所示:

图片

图片

然后,用户认证

CAS服务器接受用户的登录请求,验证用户的身份信息(如:用户名、和密码)。

如果验证成功,”SSO 服务器“,生成一个用于标识该用户的令牌(Token)。

然后,分发令牌

如果,认证成功后,SSO 服务器会将令牌返回给应用 A。

比如:CAS服务器,会生成一个Service Ticket(ST),这是一个一次性使用的票据,用于CAS客户端向CAS服务器验证用户身份。

应用 A 接收到令牌后,创建会话并允许用户访问资源。

最后,用户在多个系统间切换

这个时候,当用户尝试访问系统、或应用 B 时,应用 B 会向 SSO 服务器验证用户身份。

如果用户已经在 SSO 服务器登录,SSO 服务器会直接返回有效的令牌,无需再次输入凭证。

最后,用户在 SSO 系统内的多个应用之间切换时,只需要一次登录,后续访问都会自动通过。

单点登录实现挑战

单点故障

认证中心成为关键点,如果它出现问题,所有系统的认证流程都会受影响。

比如:在SSO系统中,认证中心(如CAS服务器)是所有用户认证的关键组件。

如果认证中心出现故障,所有依赖它的应用系统将无法完成用户认证,导致系统的访问中断。

比如:可以通过负载均衡器,将用户请求分发到多个CAS服务器实例。

这样,即使一个CAS服务器出现故障,负载均衡器可以将请求转发到其他健康的服务器。

复杂性

实现和维护SSO系统比普通认证系统复杂,涉及的协议和安全性要求较高。

比如:实现和维护SSO系统比普通的认证系统复杂,涉及多个协议和安全性要求、

例如:CAS、OAuth2.0、SAML...等,每种协议有其独特的配置要求和实现细节,增加了系统的复杂性。

跨域问题

不同域名之间的SSO需要处理跨域通信问题,比如:通过CORS设置、或使用OAuth的授权码模式。

单点登录应用

单点登录适用于多种场景,常见的应用场景包括:

企业内部系统

企业通常拥有多个业务系统,如:人力资源系统、财务系统、邮件系统...等。

通过 SSO,员工可以通过一次登录访问所有这些系统,提高工作效率。

在线服务平台

互联网公司往往提供多个在线服务,如:邮件、云存储、社交网络...等。

通过 SSO,用户只需一次登录即可访问所有服务,提供无缝体验。

电子商务系统

比如:上面我提到的,阿里包含:淘宝、天猫...等等系统,通过 SSO,用户可以通过一个账号访问所有这些服务。

总之,单点登录(SSO)是一种解决多系统认证问题的有效机制,通过一次登录让用户无缝访问多个系统。

单点登录(SSO)的核心在于:集中式的认证服务器(如 :CAS Server)管理用户身份,并通过票据机制在不同应用之间共享认证信息。

这篇关于单点登录最全详解,建议收藏!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1118234

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现