架构面试-场景题-单点登录(SSO)怎么实现的

文章目录

  • 概述
  • 基于Cookie
  • 基于Token(OAuth, JWT)
  • 集中式认证服务 (CAS, SAML)
  • 分布式Session:
  • 轻型目录访问协议(LDAP)
  • OAuth 2.0/OIDC
  • Kerberos

概述

单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在多个应用程序和网站上使用一个凭据进行登录, 就是说 允许用户在多个应用或服务中只需进行一次身份验证即可访问所有授权的服务

基于Cookie

利用父域的Cookie机制,在主域名下设置一个共享的Cookie,子域名可以读取这个Cookie来确认用户的身份。
这种方法适用于同主域名下的多个子域名之间的SSO,但如果不同主域名则不适用。
优点: 实现简单,适用于同主域名下的多个子域名之间。
缺点: 不适用于跨主域名的情况,安全性较低,容易受到中间人攻击和跨站脚本(XSS)攻击。

基于Token(OAuth, JWT)

用户在身份提供者处验证后,获得一个Token(例如OAuth中的Access Token或JWT)。
Token被存储在客户端(如Cookie、LocalStorage)或服务器端(如Session),当用户访问其他应用时,应用通过Token验证用户身份。
这种方式支持跨域,且更安全,因为Token可以加密。

优点: 支持跨域,Token可加密传输,提高安全性;Token可以离线存储,减轻服务器负担。
缺点: 需要妥善管理Token的有效期和安全性,防止Token泄露;JWT如果过长可能影响性能。

集中式认证服务 (CAS, SAML)

中心化认证服务作为单一入口,所有应用都依赖它进行身份验证。
用户在CAS/SAML服务器上登录后,CAS/SAML服务器会生成一个Ticket或Assertion传递给应用,应用再使用这个Ticket或Assertion与CAS/SAML服务器通信,确认用户身份。
CAS和SAML是两种广泛使用的集中式认证协议。

优点: 提供标准化的SSO解决方案,易于集成;能够支持多种不同的应用和服务。
缺点: 中心化服务可能成为单点故障;配置和维护较为复杂。

分布式Session:

使用共享的Session存储(如Redis、Memcached),所有应用都可以访问同一个Session存储。
用户在任一应用登录后,Session信息被写入共享存储,其他应用可以通过读取这个共享Session来确定用户状态。

优点: 提高了应用的扩展性和可用性,Session数据可以在集群中共享。
缺点: 增加了对共享存储系统的依赖,存储系统故障会影响整个SSO流程。

轻型目录访问协议(LDAP)

LDAP用于存储和检索网络上的用户和组信息,支持SSO。
应用通过查询LDAP服务器验证用户身份,避免了每个应用单独维护用户信息。

优点: 便于管理和查询用户信息,适用于大型企业环境。
缺点: 配置和维护相对复杂,不适合小型或临时项目。

OAuth 2.0/OIDC

OAuth 2.0是一个授权框架,OpenID Connect(OIDC)建立在OAuth 2.0之上,提供了身份验证功能。
用户在一个授权服务器上登录后,授权服务器向客户端应用颁发令牌,应用使用这些令牌来访问资源服务器或确认用户身份。

优点: 标准化接口,易于第三方应用集成;支持多种授权模式。
缺点: 实现细节较多,需要仔细设计安全措施;可能存在权限过宽的问题。

Kerberos

Kerberos是一种网络认证协议,特别适合企业内部网络环境,支持SSO。
Kerberos使用票证(Ticket)机制来验证用户和服务,用户登录后会收到一系列票证,这些票证可以用于访问网络中的其他服务而无需再次输入密码。

优点: 安全性高,适用于大型企业内部网络;支持多种认证机制。
缺点: 配置复杂,维护成本高;仅限于内部网络,不适用于互联网环境。

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

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

相关文章

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG,重…

不仅是输出信息,console.log 也能玩出花

console.log 是 JavaScript 中一个常用的函数,用于向控制台输出信息。 console.log 虽然主要用于调试目的,但也包含了一些有趣的用法, console.log 不仅能输出文本,还能以更丰富的方式展示信息。 比如我们打开 B 站,然…

79. UE5 RPG 创建技能冷却和消耗

在这一篇里面,我们接着优化技能,现在角色添加的主动技能能够同步到ui上面。我们在这一篇文章里面,完善技能的消耗(释放技能减少蓝量)和冷却机制。 我们可以看到,在技能类默认值这里,可以设置它的…

【YashanDB知识库】YashanDB 开机自启

【问题分类】 YashanDB 开机自启 【关键字】 开机自启,依赖包 【问题描述】 数据库所在服务器重启后只拉起monit、yasom、yasom进程,缺少yasdb进程: 【问题原因分析】 数据库安装的时候未启动守护进程 【解决 / 规避方法】 进入数据库之前…

问题清除指南|Dell OptiPlex 7070 升级 win11 开启 TPM 2.0 教程

前言:最近想把实验室台式机的系统从 Windows 10 升级到 Windows 11,遇到一点小问题,在此记录一下解决办法。 ⚠️ 注:本教程仅在 Dell OptiPlex 7070 台式机系统中测试有效,并不保证其余型号机器适用此教程。 参考链接…

计算机网络体系结构解析

OSI参考模型 与 TCP/IP模型 如图所示 TCP/IP模型有几层 应用层:只需要专注于为用户提供应用功能 HTTP、SMTP、Telnet等,工作在操作系统中的用户态,传输层及以下工作在内核态传输层:为应用层提供网络支持(TCP、UDP传…

谷粒商城实战-25-分布式组件-SpringCloud Alibaba-Nacos配置中心-加载多配置集

文章目录 一,拆分配置集二,配置文件中配置多配置集1,引用多配置集2,验证 三,多配置集总结1,使用场景2,优先级 这一节介绍如何加载多个配置集。 大多数情况下,我们把配置全部放在一个…

Linux系统学习 —— 计算机基础(笔记篇)

一、电脑硬件 电脑硬件由输入,控制计算,输出三部分组成。 输入部分包括键鼠,读卡器(外部接口),扫描仪(打印机的扫描仪)。计算控制部分包括CPU , 内存,硬盘&…

【Git基本操作】添加文件 | 修改文件 | 及其各场景下.git目录树的变化

目录 1. 添加文件&add操作和commit操作 2. .git树状目录的变化 3. git其他操作 4. 修改文件 4.1 git status 4.2 git diff 1. 添加文件&add操作和commit操作 add操作:将工作区中所有文件的修改内容 添加进版本库的暂存区中。commit操作:…

『Django』自带的后台

theme: smartblue 本文简介 点赞 关注 收藏 学会了 上一篇讲了 Django 操作 MySQL 的方法,讲了如何创建模型,如何对数据库做增删改查的操作。但每次修改数据都要写代码,多少有点麻烦。 有没有简单一点的方法呢? 有的有的&#…

鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】

线性容器Vector 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Vect…

C语言 结构体和共用体——结构体所占内存的字节数

目录 结构体所占内存的字节数 结构体所占内存的字节数

极验语序点选验证码识别(一)

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 极验文字点选验证码不必多说,很多小伙伴,借助标注工具或者打码平台标注完数据集后,使用开源的目标检测网络即可完成,欢迎收看我之前的文章: Pytorch利用ddddocr辅助识别点选验证码 或者使…

d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题

dcompiler_43.dll 是一个Windows系统中的系统文件,属于DirectX软件的一部分。这个dcompiler_43.dll(动态链接库)文件主要用于处理与3D图形编程有关的任务,是运行许多游戏和高级图形程序必需的组件之一。那么如果电脑丢失d3dcompil…

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …

Flutter-实现物理小球碰撞效果

效果 引言 在Flutter应用中实现物理动画效果,可以大大提升用户体验。本文将详细介绍如何在Flutter中创建一个模拟物理碰撞的动画小球界面,主要代码实现基于集成sensors_plus插件来获取设备的加速度传感器数据。 准备工作 在开始之前,请确保…

聊聊大模型如何为敏捷研发提效

这是鼎叔的第一百零二篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》已出版(机械工业出版社&#xff…

红日靶场----(三)2.漏洞利用

上期的通过一句话木马实现对目标主机的持久后门 我使用的是蚁剑,蚁剑安装及使用参考: 下载地址: GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 安装即使用: 1. 快速入门 语雀 通过YXCMS的后台GETSHELL 利用…

设计模式探索:策略模式

1. 什么是策略模式(Strategy Pattern) 定义 策略模式(Strategy Pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而…

算法day03 桶排序 数据结构分类 时间复杂度 异或运算

学数据结构之前 必看_哔哩哔哩_bilibili 1.认识复杂度和简单排序算法_哔哩哔哩_bilibili 桶排序(Bucket sort)------时间复杂度为O(n)的排序方法(一)_多桶排序时间复杂度-CSDN博客 桶排序 测试场景:数组中有10000个随…