当前位置: 首页 > news >正文

OIDC6-OIDC 授权流程类型

         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应用程序和单页应用混合架构

相关文章:

  • Paddlets时间序列集成模型回测实战:MLPRegressor、NHiTSModel与RNNBlockRegressor
  • 15 Midjourney从零到商用·实战篇:建筑设计与室内设计
  • 8.使用 VSCode 过程中的英语积累 - Help 菜单(每一次重点积累 5 个单词)
  • (28)oracle数据迁移(容器)-部署包资源
  • OpenCV视频I/O(7)视频采集类VideoCapture之初始化视频捕获设备或打开一个视频文件函数open()的使用
  • 【HTML|第1期】HTML5视频(Video)元素详解:从起源到应用
  • 智影S100户外直接采集输出的是绝对坐标吗?内业是否需要控制点进行配准?
  • access mysql
  • 星辰计划04-深入理解kafka的消息存储和索引设计
  • SpringBoot的概述与搭建
  • SIMETRIX 探头和测量
  • [java][gps]GPS坐标系转换
  • JVM总结
  • Python in Excel作图分析实战!
  • JAVA入门1——理论+helloworld
  • 【个人向】《HTTP图解》阅后小结
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CAP理论的例子讲解
  • HTML中设置input等文本框为不可操作
  • IOS评论框不贴底(ios12新bug)
  • Java方法详解
  • MySQL用户中的%到底包不包括localhost?
  • react 代码优化(一) ——事件处理
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Terraform入门 - 3. 变更基础设施
  • vue的全局变量和全局拦截请求器
  • webpack入门学习手记(二)
  • windows下使用nginx调试简介
  • 阿里研究院入选中国企业智库系统影响力榜
  • 分享几个不错的工具
  • 基于 Babel 的 npm 包最小化设置
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 看域名解析域名安全对SEO的影响
  • 三分钟教你同步 Visual Studio Code 设置
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • ​​​【收录 Hello 算法】9.4 小结
  • # SpringBoot 如何让指定的Bean先加载
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (02)vite环境变量配置
  • (09)Hive——CTE 公共表达式
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET简谈设计模式之(单件模式)
  • .NET中使用Redis (二)
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @ModelAttribute注解使用