OAuth2 协议及其四种授权模式

OAuth2的四种授权方式 OAuth2四种授权方式 阅读详情

官方资料置顶,本篇文章主要结合官方资料与自己的使用经验对 OAuth2 协议做一个简单的记录。

部分翻译解释可能存在问题,如果发现了,欢迎及时在评论区向博主反馈。

官网

OAuth2 协议官方 pdf

What is OAuth2 ?

An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.

关键词: 开源协议、安全授权、简单、标准

Why ?

为了解决以下问题

  • 第三方应用程序需要存储资源所有者的凭据供以后使用,通常是明文密码
  • 哪怕密码校验不安全,服务器还是需要支持密码身份验证
  • 第三方应用程序获得对资源所有者受保护资源的过于广泛的访问,使得资源所有者无法限制持续时间或访问有限的资源子集
  • 资源所有者不能在不撤销对所有第三方的访问的情况下撤销对单个第三方的访问,而且必须通过更改第三方的密码来撤销访问
  • 任何第三方应用程序的安全问题都会导致最终用户的密码和所有受该密码保护的数据受到损害
OAuth2 中的角色
  • Resource Owner (资源所有者)

    能够授予对被保护资源的访问权限的实体。当资源所有者是个人时,它被称为最终用户

  • Client (第三方应用)

    代表资源所有者并经其授权提出受保护资源请求的应用程序。

  • User-Agent (用户代理)

    Web 浏览器就是一个典型的 User-Agent

  • 服务提供商

    • Authorization Server (授权服务器)

      在成功验证资源所有者并获得授权之后,发出访问令牌的服务器将向客户端发出访问令牌

    • Resource Server (资源服务器)

      存储获取受保护资源的服务器,能够使用访问令牌接收和响应受保护的资源请求

Protocol Flow

OAuth2-1

( A ) 客户端向资源所有者请求授权,授权请求可以直接向资源所有者提出,但是更好的做法是通过 Authorization Server 做中介。在授权码模式下就是将用户引导到 Authorization Server 进行确认。

( B ) 客户端接收 Authorization Grant,它是代表 Resource Owner 授权的凭据,使用规范的四种授权类型中的一种或者使用扩展授权类型中的一种来表示。授权类型取决于客户端使用的请求授权的方法和 Authorization Server 支持的类型。

( C ) 客户端通过请求向 Authorization Server 进行身份认证且提供 Authorization Grant 来请求 Access Token。

( D ) Authorization Server 通过对客户端进行身份认证,校验 Authorization Grant,如果有效,发出 Access Token。

( E ) 客户端使用 Access Token 向 Resource Server 请求受保护的资源。

( F ) Resource Server 校验 Access Token,如果有效,满足请求。


四种授权类型
Authorization Code (授权码模式)

OAuth2-2

( A ) 客户端将用户代理引导到 Authorization Server 来启动整个授权流程。客户端包括 Client Identifier,Request Scope,Local State,Redirection URI (授权服务器在授予(或拒绝)访问权限后将用户代理发送回的重定向URI)。

( B ) Authorization Server (通过用户代理) 对资源所有者进行身份验证,并确定资源所有者是否授权或拒绝客户端的访问请求。

( C ) 假设 Resource Owner 授予访问权限,Authorization Server 使用先前提供的重定向URI(在请求中或在客户端注册期间)将用户代理重定向回客户端。重定向URI携带 Authorization Code 和客户端先前提供的任何本地状态。

( D ) 客户端使用步骤 ( C ) 获取到的 Authorization Code 向 Authorization Server 的令牌端点请求 AccessToken。发出请求时,Authorization Server 会对客户端进行身份验证。请求需要携带 Authorization Code 与获取 Authorization Code 时的重定向URI。

( E ) 授权服务器对客户端进行身份验证,验证 Authorization Code,并确保收到的重定向URI与步骤(C)中用于重定向客户端的URI相匹配。如果有效,授权服务器会发出 AccessToken、Refresh Token(可选)。


Implicit (简化模式)

OAuth2-3

( A ) 客户端将用户代理引导到 Authorization Server 来启动整个授权流程。客户端包括 Client Identifier,Request Scope,Local State,Redirection URI (授权服务器在授予(或拒绝)访问权限后将用户代理发送回的重定向URI)。

( B ) Authorization Server (通过用户代理) 对资源所有者进行身份验证,并确定资源所有者是否授权或拒绝客户端的访问请求。

( C ) 假设 Resource Owner 授予访问权限,Authorization Server 使用前面提供的重定向URI将用户代理重定向回客户端。重定向URI携带URI片段中的 Access Token。

( D ) 用户代理通过向 Web 托管的客户端资源(不包括每个片段)发出请求来遵循重定向指令。用户代理在本地保留片段信息。

( E ) Web托管的客户端资源返回一个网页(通常是带有嵌入脚本的HTML文档),能够访问完整的重定向URI,包括用户代理保留的片段,并提取包含在其中的访问令牌(和其他参数)。

( F ) 用户代理在本地执行由 Web 托管的客户端资源提供的脚本,该脚本提取访问令牌。

( G ) 用户代理将访问令牌传递给客户端。


Resource Owner Password Credentials (密码模式)

OAuth2-4

( A ) Resource Owner 将用户名、密码提供给客户端。

( B ) 客户端使用 Resource Owner 提供的用户名、密码向 Authorization Server 请求 Access Token。Authorization Server 收到请求时,会同时对客户端进行身份验证。

( C ) 授权服务器对客户端进行身份验证并验证 Resource Owner 凭据,如果有效,则发放 Access Token。


Client Credentials (客户端模式)

OAuth2-5

( A ) 客户端使用 Authorization Server 进行身份验证,并从令牌端点请求 Access Token。

( B ) Authorization Server 对客户端进行身份验证,如果有效,则发出 Access Token。


Refresh Token

OAuth2-6

( A ) 客户端通过请求向 Authorization Server 进行身份认证且提供 Authorization Grant 来请求 Access Token。

( B ) Authorization Server 通过对客户端进行身份认证,校验 Authorization Grant,如果有效,发出 Access Token。

( C ) 客户端使用 Access Token 向 Resource Server 请求受保护的资源。

( D ) Resource Server 校验 Access Token,如果有效,满足请求。

( E ) 重复步骤 ( C ) 和 ( D ),直到 Access Token 过期失效。如果客户端发现 Access Token 过期失效,客户端会去执行步骤 (G ); 否则,它可以尝试请求其他的受保护资源。

( F ) 使用无效的 Access Token 访问资源,Resource Server 会返回 Invalid Token Error。

( G ) 客户端通过请求向 Authorization Server 进行身份认证且提供 Refresh Token 来请求新的 Access Token。

( H ) The authorization server authenticates the client and validates the refresh token, and if valid, issues a new access token (and, optionally, a new refresh token). Authorization Server 通过对客户端进行身份验证并校验 Refresh Token 的有效性。如果通过,会发出一个新的 Access Token、Refresh Token(可选项)


OK,到了这里对 OAuth2 协议进行了简单的介绍和学习,后面在记录 SpringSocial 与 SpringSecurity 使用 Token 认证时会关联到这一块知识点,所以这里算是一个前置知识点吧。下一篇尽快把 SpringSocial 集成 QQ 登录完成.

=> To Be Contionued!

OAuth2.0四种授权模式以及Oauth2.0实战 Oauth2.0具有多种授权许可机制协议:授权码许可机制、客户端凭据机制、资源拥有者凭据机制(密码模式)和隐式许可机制。在源码中即可看到四种模式的实现类,还有一个RefreshTokenGranter则是刷新令牌,用于access_token失效时刷新过期时间。假如现在我需要实现手机验证码登录或者微信扫码登录等功能的时候,我们该如何处理呢?我们可以继承AbstractTokenGranter实现自定义授权模式。手机短信验证码模式@Slf4j@Override。 阅读详情

相关推荐

开放授权协议:Oauth2.0

简介 Oauth的全称是Open Authorization,是一个开放授权协议,它制定了一些标准,可以使得第三方应用无需使用用户名密码即可获得用户资源。目前很多应用都提供了第三方社交账号登录及绑定,而这背后使用的技术就是Oauth2.0. Oauth协议最新版本是Oauth2.0,也是目前使用最广泛的协议,所以后面介绍的Oauth主要是指Oauth2.0。 Oauth协议背景 随着分布式web service、开放平台和云计算使用的越来越多,第三方应用需要能访问到一些用户的私有资源。然而这些资源都是受保护

Heaven Wang 的专栏 3762

Oauth2协议详解

本文来说下什么是Oauth2 文章目录什么是OAuth2 什么是OAuth2 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 ...

wh柒八九的博客 3618

OAuth 2.0协议学习

简介 OAuth通过引入授权层以及分离客户端角色和资源所有者角色来解决第三方授权中的问题。客户端获得一个访问令牌(一个代表特定作用域、生命期以及其他访问属性的字符串),用以代替使用资源所有者的凭据来访问受保护资源。访问令牌由授权服务器在资源所有者认可的情况下颁发给第三方客户端。客户端使用访问令牌访问托管在资源服务器的受保护资源。OAuth 2.0协议与OAuth 1.0协议实现细节没有太多关联。...

Uncle_Y的专栏 650

oauth2认证协议

oauth2模拟

qq_26105397的博客 823

在优快云学Golang场景化解决方案(OAuth2.0授权登录)

OAuth2.0 定义了四种授权方式,即授权码(Authorization Code)、隐藏式(Implicit)、密码式(Resource Owner Password Credentials)和客户端凭证(Client Credentials)。OAuth 2.0 是一种用于授权的开放标准,可以让用户授权第三方应用程序访问他们存储在另一个服务提供商上的资源,例如图片、文本等。这就是 OAuth 2.0 协议的流程,可以帮助第三方应用程序安全地访问用户存储在其他服务提供商上的资源。

YKM_2580的博客 1461

聊聊OAuth2.0和OIDC

[toc]]

1063

OAuth2 原理与机制详解及应用案例

OAuth2 是安全授权开放标准协议,能让第三方应用安全访问用户资源。包括资源拥有者、客户端、资源服务器和授权服务器。有多种授权模式,其中授权码模式常见。在 Spring Boot 中结合 JWT 实现短信验证登录。包括生成验证码、校验并生成令牌等。OAuth2 安全性很重要,需 HTTPS 传输、保护令牌、限制生命周期、基于作用域控制权限等,全方位保障授权安全与应用稳定。

J老熊 4364

使用electron静默打印

使用electron静默打印 1.使用electron打印的理由 很多情况下程序中使用的打印都是用户无感知的。并且想要灵活的控制打印内容,往往需要借助打印机给我们提供的api再进行开发,这种开发方式非常繁琐,并且开发难度较大。 electron提供的打印api可以非常灵活的控制打印设置的显示,并且可以通过html来书写打印内容。 2.api ele...

w1366352655的博客 945

OAuth2.0的四种授权模式

1.什么是OAuth2 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 2.应用场景 第三方应用授权登录:在APP或者网页接入一些第三方应用时,时长...

weixin_30849403的博客 1238

永磁同步电机无传感器控制:HFI与ESMO技术详解

高频注入(HFI)和增强型滑模观测器(ESMO)是现代永磁同步电机(PMSM)无传感器控制的核心技术。HFI通过注入高频信号利用电机凸极效应获取转子位置,而ESMO则通过改进传统滑模观测器,有效抑制抖振并提升动态响应。这两种技术的结合特别适用于零低速区域的位置估计,在工业伺服、电动汽车等领域有广泛应用。方波高频注入作为实现方案之一,具有计算量小、实现简单的特点,配合自适应滤波等信号处理技术,可以在保证精度的同时降低系统成本。

weixin_29183637的博客 357

双有源桥变换器(DAB)TPS控制:从理论建模到Simulink/PSIM仿真实践

本文深入探讨了双有源桥变换器(DAB)的三重移相(TPS)控制技术,从理论建模到仿真实现。文章详细分析了TPS相比SPS和DPS的优势,阐述了其12种工况的划分逻辑与电流应力最优调制策略,并提供了在Simulink和PSIM平台搭建仿真模型的详细步骤与实战经验,帮助工程师掌握这一高效控制方法。

white的博客 584

开放授权协议-OAuth2.0

一、OAuth协议简介 1.1 OAuth是什么? 1.2 OAuth协议特点 1.3 OAuth角色划分 二、OAuth2.0 2.1 概述 2.2 四种授权模式 2.3 应用场景 三、授权过程 四、接入步骤 五、协议总结 六、结束语

微信公众号:饺子泡牛奶 720

43、基于机器学习的GNSS信号质量监测方法

本文提出了一种基于支持向量机(SVM)的GNSS信号质量监测方法,旨在有效检测邪恶波形(EWF)威胁并抑制多径干扰对导航精度的影响。通过构建包含现场采集与合成数据的数据集,结合11个相关器测量值、链路预算、仰角和方位角等特征,采用RBF核函数的SVM模型进行分类。研究评估了不同平滑时间窗口对漏检率和误报率的影响,结果表明在约35-40秒平滑时间下性能趋于稳定,并可通过多数投票机制进一步优化检测性能。该方案适用于星载GNSS接收器,在计算资源受限条件下实现了高可靠性与低完整性风险的平衡。

yyy34的博客 191

Springboot + oauth2 单点登录 - 原理篇

一、前言 1.什么是OAuth2? OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0。 二、Oauh2详细介绍 1.OAuth2四种授权模式 授权码模式(authorization code) 密码模式(resource owner pass

qq_39749620的博客 6079

TC3XX - MCAL知识点(四十二):AURIX™ TC3xx实现多相电机需要多核配合使用的场景与实操分析

本文探讨了多相电机控制系统中的关键技术问题,重点分析了多核处理器在电机控制中的应用。针对十二相电机等复杂应用场景,提出了同步采样、多核协同等解决方案。文章详细阐述了相电流同步采样原理及EBTresos配置方法,分析了ADC硬件触发机制和多核配合策略。通过Core0和Core1的协同工作设计,解决了位置信息采集与FOC算法执行的时序问题,并提供了代码实现示例。实验验证了采用ATOM0_7同时触发两个核ADC中断的可行性,为多相电机控制系统的实现提供了技术参考。

梦想技术家 501

Android面试必考问题:Android性能优化最全面试题及参考答案(8万字长文)

Android 中的 OOM(Out Of Memory,内存溢出)异常是指应用程序在运行过程中,由于申请的内存空间超过了系统所能提供的最大内存限制而导致的错误。在 Android 中,内存泄漏是指应用中的某些对象在不再被使用后,仍然被其他对象持有引用,导致这些对象无法被垃圾回收器回收,从而占用内存空间,随着时间的推移可能会导致应用内存不足,甚至崩溃。在一次开发 Android 应用的过程中,我发现应用在长时间运行后会出现内存占用过高的情况,导致应用变得卡顿,甚至可能会被系统强制关闭。

大模型大数据攻城狮的专栏 2534

Oauth2基本介绍

OAuth2 一、什么是OAuth2 OAuth 2.0是目前最流行的授权机制,用来授权第三方应用,获取用户数据。 OAuth(开放授权)是一个关于授权的开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息(比如照片、视频、用户信息等),而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0。即完全废止了OAuth1.0。OAuth 2.0协议正式发布为RFC-6749。 OAuth2主要包含以下特

weixin_42272869的博客 1455

system.img解包打包工具

最近需要对system.img进行解包,修改系统属性和添加自己的APK,再打包烧录,整理俩个方法。 system.img解包打包工具方法一 1、把system.img转换成ext4格式 ./simg2img system.img system_ext4.img 2、挂载ext4到systemMount目录进行修改 sudo mount system_ext4.img systemMount/ -o loop 3、修改完成后 unmount 退出挂载使用如下命令

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 9707

Oauth2.0简述及企业实践

之所以写这篇文章,是因为最近做的项目是根据oa2.0协议做的,不是简单使用别人的三方登录,而是做这样的一个授权平台去让别人去用。并且也有朋友问这个东西相关的内容,因此在此总结。 1.这是什么协议? OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 2.0即完全废止了OAuth1.0。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之...

MClink的博客 923

模糊控制 (Fuzzy Control) 算法详解及案例分析

模糊控制是一种基于模糊逻辑的控制策略,其核心思想是通过模糊规则和模糊推理实现对复杂系统的控制。模糊控制不依赖于精确的数学模型,而是通过模拟人类的决策过程来处理不确定性和非线性问题。

闲人编程的博客 3660

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OAuth 2.0 ——授权码模式

OAuth 是一个关于授权(authorization)的开放网络标准,主要应用在第三方登录场景,目前的版本是2.0版。本文主要参考材料为: RFC 6749 阮一峰的网络日志《理解OAuth 2.0》 其实,阮一峰的文章基本上就是翻译的 RFC 6749 文档,卷面很整洁,让人看起来很舒服,但是,内容却不怎么样,前后有点接不上,翻译的不全面,有些地方也没有解释清楚,本文尽量做一些补充。还有一个问题

拖垃圾的专栏 4441

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring Security OAuth2.0 框架入门

Spring Security OAuth2.0 实现分布式认证授权

htx4ever 的博客 919

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringBoot 整合oauth2实现授权第三方应用

什么是OAuth2 OAuth(open authorization开放授权)是一个开放标准,允许用户授权第三方应用访问他们服务器资源,而不需要将用户名和密码提供给第三方应用。OAuth2.0是OAuth协议的延续版本,但是不向后兼容OAuth1.0,即完全废止了OAuth1.0。 快递员问题 我住在一个大型的居民小区 小区有门禁系统。 小区进入小区的时候需要输入密码。 我经常网购和点外卖,每天都有快递员来送货,我必须找到一个办法,让快递员通过门禁系统,进入小区 如果我把自己的密码告诉快递员,他就拥有了

u014365523的博客 1915

oAuth2

官方网站这里oAuth2 是标准,具体的实现有两个,SpringSecurity 和 apache shero。

lhg_55的博客 511

OAuth 2.0:现代互联网授权的基石

OAuth2.0是当前互联网最广泛使用的授权协议,它允许用户授权第三方应用访问资源而无需共享密码。该协议包含四个核心角色:用户、客户端、授权服务器和资源服务器,通过授权码、简化、密码和客户端凭证四种模式适应不同场景。OAuth2.0相比APIKey、SAML等机制更安全灵活,广泛应用于社交登录、API调用和企业系统集成。作为现代数字生态的基石,掌握OAuth2.0对开发者构建安全应用至关重要。

nielilijy的专栏 1098

oauth2实现单点登录

oauth2实现单点登录 电子书资源见 https://www.yuque.com/docs/share/37bd8227-eece-435a-9805-87254f4b34e9?# 《oauth2授权》 blog 地址 https://youngboy.vip oauth2是什么? OAuth2: OAuth2(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。 举个栗子:第三方网站登录,osc

youngboy的博客 4124
上一篇: SpringSecurity 下 Session 使用
下一篇: SpringSocial 开发 QQ 登录
Earth_Programer
博客等级 码龄11年 18粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值