OAuth2介绍与使用

前言技术之Oauth2全方面介绍 一、Oauth2基本概念 1、定义 Oauth2是目前最流行的授权机制,用来授权第三方应用,获取用户数据 2、场景带入 1、外卖场景 一户人家住在一个大型居住小区,小区有门禁系统,进入小区需要输入密码,这户人家经常性点外卖,必须让外卖人员进入到小区,如果把密码告诉外卖人员,这样的话,他就和户主拥有了一样的权限,这样安全隐患太大,给了外面人员密码之后,为了安全,必须要进行修改密码,这就很麻烦。 这时候Oauth2就诞生了,外卖人员的职责只是送货,没必要知道小区密码 ... 阅读详情

1. 什么是OAuth2

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

2. OAuth2运行流程

(A)用户打开客户端以后,客户端要求用户给予授权。

(B)用户同意给予客户端授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。

3. 四种授权模式

授权码模式(authorization code):

适用于常见需要授权应用;授权码模式是功能最完整、使用最广泛、流程最严密的授权模式。授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。

 

(1)用户访问客户端,客户端将用户导向授权服务器,通过用户代理(User-Agent)发送包括它的客户端标识符、请求的范围、本地状态和一个重定向URI,授权服务器在授予(或拒绝)访问权后将其发送给用户代理。URI如下:

http://localhost:8080/oauth/authorize?client_id=clientapp&redirect_uri=http://localhost:9001/callback&response_type=code&scope=read_userinfo

其中response_type:表示要求返回授权码(code),client_id:请求客户端标识,redirect_uri:授权服务器处理后跳转地址,scope:请求授权范围。

(2)授权服务器对资源所有者进行身份验证(通过用户代理,让用户输入用户名和密码),并确定资源所有者是否授予或拒绝客户端的访问请求。

(3)用户跳转后,假如资源所有者同意授权请求,那么授权服务器将会使用前面提供的或者事先指定的重定向URI(redirection URI),重定向到客户端,并附上一个授权码(code)和一个前面提供的本地状态(state)(如果有的话,则会原值返回)。

http://localhost:9001/callback?code=ghN0hf

(4)客户端收到授权码,附上早先的重定向URI,向授权服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。在发出请求时,授权服务器对客户端进行身份验证。请求参数包含授权代码、用于获得验证的授权代码的重定向URI、标识客户端身份的client id和client secret。

http://localhost:8080/oauth/token?client_id=clientapp&client_secret=123&code=ghN0hF&grant_type=authorization_code&redirect_uri=http://localhost:9001/callback&scope=read_userinfo

注意:用户密匙和密码(client_id和client_secret)可以在headers里添加认证,Authorization。其中client_id参数和client_secret参数用来让授权服务器确认客户端的身份(client_secret参数是保密的,因此只能在后端发请求),grant_type参数的值是authorization_code,表示采用的授权方式是授权码,code参数是上一步拿到的授权码,redirect_uri参数是令牌颁发后的回调网址。

(5)授权服务器对客户端进行身份验证,验证授权代码,并确保所收到的重定向URI与步骤(3)中对客户端重定向的URI相匹配,如果检查通过,授权服务器将发送访问令牌access token和刷新令牌refresh token(可选)。​

然后授权服务器给我们返回授权码,如下:

{
    "access_token": "36cded80-b6f5-43b7-bdfc-594788a24530",
    "token_type": "bearer",
    "expires_in": 43199,
    "refresh_token":"45cdce99-b6f5-8866-bdfc-764745a45780",
    "scope": "read_userinfo"
}

 

简化模式(implicit):

适用于公开的浏览器单页应用;简化模式不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。

(1)用户访问客户端,客户端将用户导向授权服务器,通过用户代理(User-Agent)发送包括它的客户端标识符、请求的范围、本地状态和一个重定向URI,授权服务器在授予(或拒绝)访问权后将其发送给用户代理。URI如下:

http://localhost:8080/oauth/authorize?client_id=clientapp&redirect_uri=http://localhost:9001/callback&response_type=token&scope=admin&state=abc

这一步直接申请授权token,参数和申请授权码类似,client_id,redirect_uri回调地址,response_type改为直接获取token,state用于认证标记,原样传回。

(2)授权服务器对资源所有者进行身份验证(通过用户代理,让用户输入用户名和密码),并确定资源所有者是否授予或拒绝客户端的访问请求。

(3)用户跳转后,假如资源所有者同意授权请求,那么授权服务器将会使用前面提供的或者事先指定的重定向URI(redirection URI),重定向到客户端,并附上访问令牌等信息。如下:

http://localhost:9001/callback#access_token=0406040a-779e-4b5e-adf1-bf2f02031e83&token_type=bearer&state=abc&expires_in=119

密码模式(resource owner password credentials):

适用于桌面APP等;使用用户名/密码作为授权方式从授权服务器上获取access token,一般不支持refresh token。在这种模式中,用户必须把自己的密码给客户端,但是客户端不得储存密码。这通常用在用户对客户端高度信任的情况下,比如客户端是操作系统的一部分,或者由一个著名公司出品。而认证服务器只有在其他授权模式无法执行的情况下,才能考虑使用这种模式。

(1)用户访问客户端,客户端将用户导向授权服务器,然后提供URI连接包含用户名和密码信息给授权服务器。如下:

http://localhost:8080/oauth/token?client_id=clientapp&client_secret=123&username=anumbrella&password=123456&grant_type=password&scope=admin

(2)授权服务器认证用户名和密码信息正确后,然后返回客户端access_token等信息,如下:

{
    "access_token": "58a02fd5-87f5-44ff-bbdd-d429cf6a2f60",
    "refresh_token":"45cdce99-b6f5-8866-bdfc-dtfsdft55780",
    "token_type": "bearer",
    "expires_in": 43199,
    "scope": "admin"
}

客户端模式(client credentials):

适用于服务器间通信,客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。

(1)客户端直接向授权服务器发起认证请求,URI如下:

http://localhost:8080/oauth/token?client_id=clientapp&client_secret=123&grant_type=client_credentials&scope=devops

(2)授权服务器通过认证后,直接返回客户端access_token等信息,如下:

{
    "access_token": "776b162a-949e-4dcb-b16b-9985e8171dc0",
    "refresh_token":"46ffdtfa-b6f5-8866-bdfc-dtfsdft55780",
    "token_type": "bearer",
    "expires_in": 43188,
    "scope": "devops"
}

 

【OAuth2】OAuth2概述及使用GitHub登录第三方网站 OAuth 是一个开放的非常重要的认证标准/协议,允许用户授权第三方应用访问其存储在其他网站上资源,而无需将用户名密码提供给第三方网站的开放标准/协议。OAuth2 是 OAuth 的最新版本,同时也是被广泛应用的一个版本。我们在网站上常见的QQ登录,微信扫码登录,GitHub 授权登录就是基于 OAuth2.0 实现的。点击跳转。 阅读详情

相关推荐

Spring Security OAuth2详解

创建认证成功处理器和认证失败处理器,处理登录成功和登录失败请求@Component@Slf4j@Autowired@Autowired@Override// 1. 从请求头中获取 ClientIdthrow new UnapprovedClientAuthenticationException("请求头中无client信息");// 2. 通过 ClientDetailsService 获取 ClientDetails。

qq_33814479的博客 7869

【OAuth2】详细讲解

Oauth2的基本概念与四种认证模式的详细讲解 ​​​​​​​

Huang_Ds的博客 2万+

OAuth 2.0 介绍和使用示例

OAuth 2.0 是一种开放标准授权协议,用于安全地让第三方应用访问用户在另一个服务上的资源,而无需暴露用户的凭证。OAuth 2.0 主要用于 Web 应用程序、桌面应用程序、移动应用程序和物联网设备等场景。

21空间的博客 1439

OAuth2 详细介绍!

OAuth2 , Spring Security OAuth2 , JWT

weixin_52834606的博客 1万+

深圳SILAS(智能融合低空系统)无人机调度系统介绍

一、系统定位与核心目标SILAS(Smart Integrated Lower Airspace System)是深圳市为低空经济打造的“数字大脑”,由粤港澳大湾区数字经济研究院自主研发,定位为城市级低空飞行智能调度与管理平台。核心目标是解决低空经济中“高密度、高复杂度、多主体”的飞行调度难题,实现空域资源的高效分配、飞行安全的智能监管及全场景服务的无缝协同,支撑深圳从“无人机之都”向“天空之城”升级。二、核心架构:低空基础设施“四张网”设施网。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 3746

科研党必看!Zotero+Claude3插件实战:如何用AI高效阅读文献(附详细配置步骤)

本文详细介绍了如何通过Zotero与Claude3插件的深度整合,实现科研文献的高效阅读与管理。从环境配置到核心功能实战,包括智能摘要生成、精准学术翻译和论文写作辅助等,帮助科研人员大幅提升工作效率。特别适合需要处理大量文献的研究者使用。

o0p1q2r3的博客 433

SpringSecurity之Oauth2介绍

第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的接口协议。OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript、Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。

justlpf的专栏 4479

【第4章 光模块实测方法总结(环境搭建、眼图测试、接收测试、注意事项)】

本文系统介绍了光模块测试的完整流程与关键要点,涵盖低速模块到3.2T PAM4超高速模块的测试方法。内容包括:1)测试环境搭建(光路/电路要求);2)核心测试项目(眼图分析、接收灵敏度/饱和测试、误码压力测试);3)PAM4专项测试(TDECQ、RLM线性度等);4)可靠性测试(温循、电压、老化);5)八大注意事项(如禁止脏端面测试、长短距混插等)。特别强调高速模块对测试环境的高敏感性,需重点关注波形质量而非单纯光功率,并需进行严格压力测试才能暴露潜在问题。

学无止境 448

介绍OAuth2

OAuth2简单介绍

m0_62528678的博客 777

vasp算表面吸附流程_VASP表面吸附计算实例分析

本文主要为了记录在学习Vasp计算过程中如何设置INCAR中的一些参数,并不着重讲解其含义,详见可自行到vasp官网查阅。其次关于建模部分也不做细致讨论,一般结构可从Materials Studio里自带的晶体数据库导出,或从三大数据库网站上下载:1、Materaials Project网址:https://materialsproject.org/(强烈推荐,邮箱注册即可使用)2、CCDC网址:...

weixin_39617669的博客 2240

十四种逻辑器件综合对比——《器件手册--逻辑器件》

逻辑器件是数字电路中最基本的逻辑单元,用于实现基本的逻辑运算,如与、或、非、异或等。逻辑门根据输入信号的组合产生相应的输出信号。与门:只有当所有输入信号都为高电平时,输出才为高电平。或门:只要有一个输入信号为高电平,输出就为高电平。非门:输出信号与输入信号相反。异或门:当两个输入信号不同时,输出为高电平;相同则输出为低电平。用于对输入信号进行反相操作,即将高电平转换为低电平,低电平转换为高电平。常用于信号的反相处理和逻辑电平的转换。

XU157303764的博客 2030

Oauth2介绍

Oauth2介绍 文章目录Oauth2介绍1. 简介2. 场景3. 架构4. 流程4.1 OAuth2 平台开发流程4.2 应用开发接入流程5. 示例6. 联系6.1 相关联系6.2 相对联系7. 参考7.1 支持OAuth2的常用平台7.2 参考相关文档 1. 简介 OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。 OAuth2.0是OAuth的第二代协议,也是目前普遍使用的协议。

minjor的博客 2633

CDD那些事 - DID and SecurityAccess

本文介绍了SecurityAccessSID27的安全访问配置流程:1.通过StateGroups添加Level2群组;2.在Classes定义L2子功能;3.配置4步解锁流程,选择对应解锁等级;4.在DiagnosticInstance设置请求响应。同时说明了DID配置的两种方式:在DIDs页面定义或通过Identification页面创建,前者定义更全面。文章还提到ServiceList支持view/edit模式,其中edit模式可配置DID的多服务支持(如同时支持SID22读取和SID2E写入),但该

ziteng21的博客 256

【Spring | OAuth2】OAuth2介绍与使用

什么是OAuth2 OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息 OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0 应用场景 第三方应用授权登录:在APP或者网页接入一些第三方应用时,时常会需要用户登录另一个合作平台...

766

DeepSeek在实时计算与流处理系统中的突破性实践

对于技术决策者而言,现在正是将DeepSeek实时计算技术纳入企业架构蓝图的关键时机,那些能够率先构建实时智能能力的企业,将在数据驱动的商业竞争中赢得决定性优势。DeepSeek通过创新的流处理架构,成功将复杂事件处理(CEP)的延迟降低到亚秒级,同时保证了计算结果的精确性。DeepSeek研发的神经架构搜索(NAS)与知识蒸馏联合优化框架,可在保持模型精度的前提下,将参数量压缩至原始模型的1/100,实现边缘设备的实时AI推理。随着5G和物联网技术的普及,对实时处理能力的需求将呈指数级增长。

Programming Talk 291

6、探索音乐结构中的统一性:贝多芬《英雄交响曲》第一乐章的深度剖析

本文深入剖析了贝多芬《英雄交响曲》第一乐章的音乐结构,探讨其统一性的来源及表现形式。通过主题与动机、和声与调性、旋律与节奏、织体与动态等多方面的分析,揭示了这部作品在技术层面和情感表达上的卓越成就。

b9c0d的博客 518

OAuth 2.0介绍

OAuth 2.0是一种授权框架,用于授权第三方应用访问用户的资源,比如用户的照片、个人信息等。OAuth 2.0定义了四种授权方式:授权码模式、隐式授权模式、密码模式和客户端模式。OAuth 2.0具有高度的安全性和可扩展性,被广泛应用于各种开放平台的接口鉴权,是目前应用最广泛的开放平台鉴权方式之一。

没有简介 5629

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OAuth 2 深入介绍-收藏

OAuth 2 深入介绍学习授权

m0_37501154的博客 222

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OAuth2协议的大致介绍【入门】

Spring Security支持OAuth2认证,并提供授权码模式,密码模式,简化模式,客户端模式等四种授权模式,前面微信扫码登录的例子就是基于授权码模式。传统方式存在密码共享风险,如果要跨平台登录,用户需将账号密码交给第三方应用,存在泄露风险,而密码一旦泄露,攻击者会访问用户的所有资源,另外,用户如果修改密码,已登录所有第三方密码便会失效,用户体验极度不好。简单理解是使用授权码去获取令牌,要想获取令牌先要获取授权码,授权码的获取需要资源拥有者亲自授权同意才可以获取(如用户点击允许登录)

2301_79757798的博客 899

OAuth2.0详细介绍与实践(通俗易懂)

Oauth2.0详细介绍及其实践

cV展示的学习园 5万+

OAuth2简单介绍

OAuth2介绍

yzq102873的博客 1013

oauth2入门及介绍

OAuth的思路 OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。“客户端"不能直接登录"服务提供商”,只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。 "客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客...

霜之哀伤 2692
上一篇: 什么是JWT?
下一篇: 高并发API限流策略
youbo_sun
博客等级 码龄12年 20粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值