OIDC6-OIDC 授权流程类型

ops/2024/10/19 3:15:34/

         OpenID Connect(OIDC)支持三种主要的授权流程(Authorization Flow),分别是授权码流程(Authorization Code Flow)、隐式流程(Implicit Flow)和混合流程(Hybrid Flow)。这些流程用于管理访问用户身份信息和受保护资源的过程,适用于不同的场景。每种流程的区别主要在于如何交换和传递ID TokenAccess Token

1.授权码流程(Authorization Code Flow)

1.1. 工作原理

    授权码流程是最常用的流程,特别适合安全要求较高的应用程序,如Web应用程序或服务器端应用程序。它使用服务器端与身份提供者(IdP)进行交互,从而安全地交换令牌。

1.2.流程步骤:

         1)用户登录请求:用户点击登录按钮,应用程序将用户重定向到身份提供者的授权页面。

         2)用户身份验证:用户在身份提供者页面上输入凭据(用户名、密码)进行登录。

         3)发放授权码:身份验证成功后,身份提供者将用户重定向回应用程序,同时附带一个授权码(Authorization Code

         4)交换授权码:应用程序向身份提供者的令牌端点发送请求,使用授权码交换ID TokenAccess Token

         5)验证ID Token:应用程序验证ID Token并确认用户身份。

         6)使用Access Token:使用Access Token访问受保护的资源。

1.3.优点

         1)更安全,因为ID TokenAccess Token通过服务器端传递。

         2)不直接暴露令牌到浏览器。

         3)适合长生命周期的令牌(例如需要刷新令牌的场景)。

1.4.适用场景

         1)服务器端Web应用程序

         2)后端服务之间的交互

2.隐式流程(Implicit Flow)

2.1.工作原理

         隐式流程将ID TokenAccess Token直接传递到客户端(如浏览器),而不需要通过后端服务器。这种流程适用于纯前端应用程序,如单页应用(SPA)。由于令牌在浏览器中直接暴露,因此隐式流程不如授权码流程安全。

2.2.流程步骤

         1)用户登录请求:用户点击登录按钮,应用程序将用户重定向到身份提供者的授权页面

         2)用户身份验证:用户在身份提供者页面上输入凭据进行登录

         3)发放ID Token/Access Token:身份验证成功后,身份提供者立即通过浏览器重定向并返回ID TokenAccess Token(无需授权码)。

         4)验证ID Token:客户端应用程序在浏览器中验证ID Token并确认用户身份。

         5)使用Access Token:使用Access Token访问受保护的资源。

2.3.优点

         1)简化流程,减少网络请求,无需额外的授权码交换步骤。

         2)适合前端单页应用程序(SPA)。

2.4.缺点

         1)安全性较低:因为令牌直接暴露给客户端,可能存在安全漏洞,如Token被截取或篡改。

         2)不能刷新令牌(Refresh Token不支持隐式流程)。

2.5.适用场景

         单页应用(SPA)

         移动或桌面应用程序,但需要额外的安全防护。

3.混合流程(Hybrid Flow)

3.1.工作原理

         混合流程结合了授权码流程和隐式流程的优点,允许在身份验证时同时返回授权码部分令牌(如ID Token),但最终的Access Token仍通过服务器端交换。这种流程提供了较高的灵活性,可以适应需要即时ID Token的场景,同时保持更高的安全性。

3.2.流程步骤

         1)用户登录请求:用户点击登录按钮,应用程序将用户重定向到身份提供者的授权页面。

         2)用户身份验证:用户在身份提供者页面上输入凭据进行登录。

         3)发放授权码和ID Token:身份验证成功后,身份提供者通过浏览器重定向,返回一个授权码ID Token

         4)交换授权码:应用程序使用授权码向身份提供者请求Access Token

         5)使用Access Token:使用Access Token访问受保护的资源。

3.3.优点

         1)提供了更好的安全性,因Access Token在后端交换。

         2)同时可以快速获取ID Token,便于应用程序立即确认用户身份。

         3)可以与前端和后端应用程序一起使用。

3.4.缺点

         实现相对复杂,尤其是需要处理多种Token交换机制。

3.5.适用场景

         1)需要即时ID Token的应用程序

         2)Web应用程序和单页应用混合架构


http://www.ppmy.cn/ops/119901.html

相关文章

mongoDB快速上手

MongoDB 将数据存储为一个文档,数据结构由键值(key>value)对组成。 MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组, 下载https://www.mongodb.com/try/download/community 下载完成解压缩 在目下创建data/db文…

Redis中String类型的常用命令(append,getrenge,setrange等命令)

Redis----String命令 前言.常见的String存储类型. 常见命令1. set 命令2. get 命令3. mget命令与mset命令4. setnx命令5. setex与psetex命令6. incr与incrby与incrbyfloat命令7. decr与decrby命令8. append命令9. getrange和setrange命令10. strlen命令. 前言. 常见的String存…

51单片机系列-串口(UART)通信技术

🌈个人主页: 羽晨同学 💫个人格言:“成为自己未来的主人~” 并行通信和串行通信 并行方式 并行方式:数据的各位用多条数据线同时发送或者同时接收 并行通信特点:传送速度快,但因需要多根传输线&#xf…

陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造

大家好!今天要和大家聊聊一项超酷的技术突破——《Direct 4D printing of ceramics driven by hydrogel dehydration》发表于《Nature Communications》。我们都知道4D打印很神奇,能让物体随环境变化而改变形状。但陶瓷因为太脆太硬,4D打印一…

某大型公园定岗定编项目成功案例纪实

某大型公园定岗定编项目成功案例纪实 ——优化人力配置,实施灵活化人员调整策略,解决忙闲不均问题 【客户行业】文旅行业;事业单位;公园 【问题类型】定岗定编 【客户背景】 某大型公园随着上级政策的改变,公园取…

(详细、重点)iOS开发与前端开发的相同点和不同点 20个

iOS开发和前端开发都是在软件开发领域中非常重要的技术方向,它们有一些相似之处,但也有很多不同之处。以下是对它们的相同点和不同点的详细解释: 相同点 编程基础: 两者都需要扎实的编程基础,理解数据结构、算法、面向…

在PC端连接苹果手机(iPhone)时,即使已经开启了开发者模式(开发者权限),但仍然无法成功连接,是什么原因?

目录 1. 缺少信任设备授权 2. USB线或端口问题 3. 没有安装正确的驱动程序 4. Apple Mobile Device 服务未启动(适用于 Windows) 5. 开发者选项中的设置问题 6. 防火墙或杀毒软件阻止 7. USB 限制功能已开启 8. 软件版本不兼容 9. iPhone处于恢…

合并代码讲解

第一步,为了定义链表的结构,需要创建一个节点结构体。 typedef struct lnode {int data; // 节点存储的数据struct lnode *next; // 指向下一个节点的指针 } lnode, *linklist;解释: 此结构体lnode代表链表的节点,包含一个整数型数据data和一…