【一图学技术】9.OAuth2.0授权框架SSO单点登录图解及关系区别、使用场景

news2024/9/22 11:38:56

OAuth2.0原理&SSO单点登录图解

一、单点登录SSO
1.概述

​ 单点登录(全称Single Sign On,简称就是SSO)是一种身份验证和授权机制,它允许用户在多个相关但相互独立的系统或应用程序之间进行无缝切换,而无需重复登录。在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

2.SSO 的主要特点包括:
  1. 减少重复登录:用户只需一次登录,就可以访问所有受信任的应用和服务。
  2. 提高用户体验:简化了用户的访问流程,使用户操作更加便捷。
  3. 增强安全性:通过减少密码输入次数,降低了密码泄露的风险,并且可以统一管理用户身份认证。
  4. 集中式身份管理:企业可以集中管理用户账户和权限,简化了账户管理的复杂性。
3. SSO 的实现通常涉及以下几个关键组件:
  1. 身份认证服务器:负责处理用户的登录请求和身份验证。
  2. 服务提供商:用户访问的各个应用程序或服务,它们信任身份认证服务器的认证结果。
  3. 会话管理:一旦用户登录,会生成会话信息,该信息在用户访问其他服务时被共享。
4. SSO 的工作流程大致如下:
  1. 用户尝试访问受 SSO 保护的应用。
  2. 如果用户尚未登录,应用将重定向用户到身份认证服务器。
  3. 用户在身份认证服务器上输入登录凭据。
  4. 身份认证服务器验证用户凭据,如果成功,生成会话或令牌。
  5. 用户带着会话或令牌信息重定向回原始应用。
  6. 应用验证会话或令牌的有效性,并允许用户访问。

SSO 可以应用于多种场景,如企业内部多个业务系统的整合,或者多个服务提供商之间的用户访问。它通过提供一个统一的登录入口,简化了用户操作,同时提高了系统的安全性和可管理性。

5.两种情况SSO

(1)根域名相同

​ 1.浏览器也就是用户在访问一个网站时,网站会创建cookie并返回给用户并服务端会存有session,同时将session存入Redis缓存(根域名相同的系统一般Redis缓存相同);

2.当该用户访问根域名相同的其他系统时,会携带cookie(key),该系统会根据cookie的key去Redis缓存中找相关信息的session,有则响应成功,否则提醒用户登录。

(2)不同域名

<访问两个相互信任的不同根域名的服务器,需要一个中间服务器sso。>

​ 1.用户首次访问服务器A,服务器A提示未登录,就会重定向redirect(服务A的url)sso,并且携带来源ip

​ 2.重定向(携带cookie包含服务器A的url)到sso,告诉说需要登录,sso则返回login.html;

​ 3.用户访问sso进行登录,登陆成功,然后sso创建全局的token,返回token并重定向回服务器A(因为重定向携带着cookie里A的url)。本地cookie有浏览器标识,根据这个 在sso就可查询到对应的token;

​ 4.就会再次访问服务A,此时携带着全局的token,而服务A就会对这个token进行验证,向sso进行验证该token是否有效,如果有效,则验证成功,服务A也会创建局部的token :token_A返回给用户或者浏览器;

​ 5.此时,用户去访问另一个服务B,提示未登录,重定向给sso,携带服务B的url;

​ 6.请求就会带着cookie(浏览器标识,Burl)去重定向到sso,sso检查cookie发现对应token,已经登录过,就把token返回,重定向到服务器B;

​ 7.此时请求带着token去访问服务B,服务B就向sso检查token是否有效,有效就颁发自己的token:token_B给客户端

全局token失效或者销毁的时候,就得通知局部token失效。


二、OAuth2.0授权协议
1.概述

​ OAuth 2.0是一个行业标准的授权协议,用于让第三方应用获取有限的访问权限,而无需暴露用户的用户名和密码。它主要用于:

  1. 授权:允许用户授权第三方应用访问他们在另一个服务上的资源,而不必共享他们的用户名和密码。
  2. 安全性:提供了一种安全机制,确保只有经过用户同意,第三方应用才能访问特定的资源。
  3. 灵活性:支持多种授权流程,适用于不同的应用场景,包括Web应用、桌面应用、移动应用和居住式应用。
2. OAuth 2.0 的核心概念包括:
  • 资源所有者(Resource Owner):指拥有资源的用户。
  • 客户端(Client):需要访问资源的第三方应用。
  • 授权服务器(Authorization Server):负责认证用户身份并发放访问令牌给客户端的服务器。
  • 资源服务器(Resource Server):存储用户资源的服务器,根据访问令牌提供资源访问。
  • 访问令牌(Access Token):由授权服务器签发的一个字符串,代表用户授权给客户端的权限。
3. OAuth 2.0 的工作流程通常包括以下步骤:

  1. 客户端注册:在授权服务器上注册,获取客户端ID客户端密钥
  2. 用户授权:客户端引导用户至授权服务器请求授权。
  3. 授权响应:用户同意授权后,授权服务器重定向用户回客户端,并附带授权码code访问令牌access_token
  4. 获取访问令牌:客户端使用授权码code向授权服务器请求访问令牌access_token
  5. 访问资源:客户端使用访问令牌access_token向资源服务器请求资源。
4. OAuth 2.0 定义了四种授权类型:
  1. 授权码授权(Authorization Code Grant):适用于有服务器端的Web应用
  2. 隐式授权(Implicit Grant):适用于客户端JavaScript应用。
  3. 密码授权(Resource Owner Password Credentials Grant):适用于用户对客户端高度信任的情况。
  4. 客户端凭证授权(Client Credentials Grant):适用于服务器到服务器的通信。

OAuth 2.0被广泛应用于社交登录、API访问、单点登录等多种场景,它通过提供一个安全的授权机制,使得用户可以控制哪些应用可以访问他们的数据,同时也方便了开发者构建跨平台和跨应用的解决方案。


三、sso单点登录和OAuth2使用场景、关系以及区别

​ SSO(单点登录)和OAuth 2.0是两种在身份验证和授权领域中常用的技术,它们各自有不同的概念、使用场景以及它们之间的关系和区别。

关系

​ SSO和OAuth 2.0都关注身份认证和授权,致力于提高安全性和用户体验,在实际应用中,可能会根据具体需求结合使用。

技术区别

​ SSO是一种思想或解决方案,更侧重于提供单一登录凭证来优化用户体验,而OAuth 2.0是一个具体的协议,侧重于为第三方应用提供灵活的授权访问。此外,SSO通常用于内部系统的整合,而OAuth 2.0则广泛用于第三方应用与平台的集成。

​ 在技术实现上,SSO可能需要解决集成复杂性和会话管理的技术挑战,而OAuth 2.0需要确保授权流程的安全性和有效管理访问令牌。在选择使用哪种机制时,需要考虑应用场景、安全性需求、用户体验等因素。

作用区别:

SSO(单点登录)是一种让用户只需登录一次就能访问所有相关系统或应用的机制。它通过中央认证服务器来验证用户身份,并在多个系统中共享会话或令牌,以此减少用户在多个系统间切换时需要重复登录的麻烦。SSO的优点包括提高用户效率、增强安全性和改善用户体验。它的实现方式通常涉及中央认证服务器和共享会话或令牌,适用于企业内部有多个相互关联的系统的场景。

OAuth 2.0是一个授权框架,用于为第三方应用程序提供对受保护资源的访问权限,而无需暴露用户的用户名和密码。它通过客户端请求授权,用户授权,然后客户端获取访问令牌的过程来工作。OAuth 2.0支持多种授权模式和范围,具有安全的授权流程,并且方便与外部应用的合作。

使用场景

​ SSO主要适用于企业内部系统的整合,强调对资源的细粒度控制;而OAuth 2.0更广泛地应用于第三方应用与平台的集成,侧重于为第三方应用提供授权访问。此外,SSO关注于提供单一登录凭证,优化用户体验,而OAuth 2.0则侧重于灵活的授权模式和范围,保护用户的资源和隐私。

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

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

相关文章

【3】MySQL的安装即启动

目录 一.下载 二.安装 三.启动 一.下载 二.安装 安装MySQL时遇到的Initializing database错误&#xff1a;推荐下面的博客&#xff08;简单就是电脑名不要出现中文&#xff09; https://blog.csdn.net/m0_52775858/article/details/123705566 三.启动 PS&#xff1a;cmd要…

多台USB 3.0相机启动时部分相机无法打开

在使用多台USB 3.0相机时&#xff0c;遇到启动时部分相机无法打开的问题是较为常见的情况。这个问题通常与带宽、供电、驱动程序、或系统资源管理有关。以下是一些优化建议&#xff0c;帮助你提高相机启动的可靠性&#xff1a; 1. USB带宽管理 USB 3.0的带宽虽然比USB 2.0高很…

自训Transformer模型:识别图像是否由AI生成?

背景 随着AI生成图像技术的迅猛发展&#xff0c;特别是生成对抗网络&#xff08;GANs&#xff09;和深度学习的不断进步&#xff0c;生成的图像变得越来越逼真。 这项技术不仅催生了许多创新应用&#xff0c;也带来了潜在的风险和挑战。 Transformer模型在图像识别中的作用 …

PHP初级栈进阶篇

小刘小刘&#xff0c;下雨不愁 (收藏&#xff0c;关注不迷路) 这里我会更新一些php进阶知识点&#xff0c;新手想再进一步可以有个方向&#xff0c;也有个知识图谱的普及 当然本篇不止写技术 会涉及一些进阶路线 我也是在这里积累&#xff0c;希望和同行者一起进步为后来者…

网络协议四 物理层,数据链路层,数字信号,模拟信号,信道,CSMA/CD协议-以太网帧协议,PPP协议,网卡

从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议&#xff0c;以及加上协议后的称谓 各个层的作用 应用层&#xff1a;可以认为是原始数据&#xff0c;该数据称为 报文&#xff0c;用户数据。 运输层&#xff1a;也叫传输层&am…

猫头虎 分享:Python库 Pytest 的简介、安装、用法详解入门教程

猫头虎 分享&#xff1a;Python库 Pytest 的简介、安装、用法详解入门教程 &#x1f680; 今天猫头虎带您深入了解 Python 测试框架 Pytest 的强大功能&#xff0c;手把手教您从安装到实际使用&#xff0c;助您轻松提升代码质量&#xff01;&#x1f63a; 摘要 &#x1f4cb; …

Windows蓝屏事件:深入分析与未来启示

引言 在2024年7月19日&#xff0c;一起引发全球范围蓝屏问题的事件&#xff0c;将安全领域领先的公司CrowdStrike推向了舆论的风口浪尖。尽管事后CrowdStrike发布了一份长达12页的根本原因分析&#xff08;RCA&#xff09;&#xff0c;试图解释并缓解这一问题&#xff0c;但该…

学习笔记 韩顺平 零基础30天学会Java(2024.8.14)

P500 集合体系图 单列集合是指自己只有一个值&#xff0c;双列集合是像键值对这样的 P501 Collection方法 对于第三点&#xff0c;像Set这样的&#xff0c;存放进去的和取出来的顺序可能不是一样的&#xff0c;所以就叫无序的 P502 迭代器遍历 在调用iterator.next()方法之前必…

新160个crackme - 030-Acid Bytes.4

运行分析 需要破解Name和Serial PE分析 upx壳&#xff0c;32位 linux系统upx -d 脱壳 脱壳后发现是Delphi程序 静态分析&动态调试 ida搜索字符串&#xff0c;找到Your Name must be at least 6 Chars long !&#xff0c;双击进入 发现地址为红色&#xff0c;即函数未定义 选…

grpc简单知识

目录 gRPC简介 RPC&#xff08;远程过程调用&#xff09;的定义与重要性 gRPC的设计目标与使用场景 ​编辑gRPC调用方式 Unary RPC&#xff1a;一元RPC Server-side streaming RPC&#xff1a;服务端流式RPC Client-side streaming RPC&#xff1a;客户端流式RPC Bidirecti…

Midjourney应用-用AI帮你做广告视频(动物走秀视频制作)

​ 前言/introduction 在之前的教程里我们讲过动物拟人化图片的生成。 这篇我们讲下这种图片的一种应用&#xff1a; 动物走秀视频广告制作方法 使用工具&#xff1a; MidjourneyAI视频生成工具&#xff08;即梦AI/可灵AI/runway&#xff09; 操作方法 step1-Midjourney出图 …

从数字化到数智化:消费零售企业如何实现门店数智化管理?

随着信息技术的飞速发展&#xff0c;数字化已成为企业转型的必经之路。然而&#xff0c;数字化本身并不是目的&#xff0c;而是通往数智化的桥梁。数智化&#xff0c;即数据智能化&#xff0c;是指企业通过数字化手段收集和分析数据&#xff0c;进而利用这些数据驱动决策和创新…

气象大数据案例项目(求各气象站的平均气温)

气象大数据案例项目&#xff08;求各气象站的平均气温&#xff09; 一、项目需求二、数据格式三、项目开发3.1 在windows 进行开发3.2 运行结果3.3 对项目打包 一、项目需求 现在有一份来自美国国家海洋和大气管理局的数据集&#xff0c;里面包含近30年每个气象站、每小时的天…

C++ 面向对象技术实战:实现基于 POSIX 线程标准封装的线程池

线程池基础概述 为什么要有线程池&#xff1f;假设没有使用线程池时&#xff0c;一个请求用一个子线程来处理。每来一个请求&#xff0c;都得创建子线程&#xff0c;子线程执行请求&#xff0c;关闭子线程。当请求量&#xff08;并发&#xff09;比较大的时候&#xff0c;频繁…

新能源遇“秋老虎”,8月第二周销量集体下滑,问界惨遭腰斩

文/王俣祺 导语&#xff1a;随着日前7月份乘用车销量的公布&#xff0c;我们发现7月并没有因6月各车企的“冲量”行为迎来反噬&#xff0c;对于这种“淡季不淡”的现象市场上一片看好。但从近日公布的8月销量数据来看&#xff0c;人们对于“秋老虎”的恐怖可以说是一无所知。随…

MySQL学习[5] ——MySQL日志

五、MySQL日志 5.1 MySQL中有哪些日志&#xff1f; MySQL中主要有三种日志&#xff1a;undo log&#xff08;回滚日志&#xff09;、redo log&#xff08;重做日志&#xff09;、binlog&#xff08;归档日志&#xff09;&#xff0c;简单介绍&#xff1a; undo log&#xff…

Redis 高级篇(分布式缓存)

一、Redis分布式缓存 单点Redis问题&#xff1a; 数据丢失&#xff08;实现Redis数据持久化&#xff09;并发能力&#xff08;搭建主从集群&#xff0c;实现读写分离&#xff09;存储能力&#xff08;搭建分片集群&#xff0c;利用插槽机制实现动态扩容&#xff09;故障恢复能…

张宇36讲重点勾划+30天保底120带刷计划

先说结论&#xff0c;张宇36讲不适合目标100分的同学去用&#xff01; 张宇36讲&#xff0c;有一个问题&#xff0c;就是内容太多了&#xff1a; 页数达到了1200多页。这个恐怖的内容量&#xff0c;恐怕没有人可以看完。 但是张宇老师一开始说&#xff0c;不会删减任何内容&…

TinyWebserver的复现与改进(5):HTTP报文的解析与响应

GitHub - yzfzzz/MyWebServer: Linux高并发服务器项目&#xff0c;参考了TinyWebServer&#xff0c;将在此基础上进行性能改进与功能增加。为方便读者学习&#xff0c;附带详细注释和博客&#xff01; TinyWebserver的复现与改进&#xff08;1&#xff09;&#xff1a;服务器环…

模型训练与验证minicpm-v

minicpm-v 模型进行微调并进行验证 训练使用混合数据集进行训练&#xff0c;对minicpm-V进行lora微调&#xff0c;微调后使用llama3_1对输出结果与标签值进行比对&#xff0c;计算准确率。 验证代码为: # URL https://swift.readthedocs.io/zh-cn/latest/LLM/VLLM%E6%8E%A8%…