OAuth 2.1 协议介绍

OAuth 2.1 去掉了 OAuth2.0 中的密码模式、简化模式,增加了设备授权码模式,同时也对授权码模式增 加了PKCE 扩展。

授权码模式+PKCE扩展

授权码模式交互过程,见之前 OAuth2.0 授权码模式的讲解。这里要说的是授权码模式如何拓展 PKCE
Proof Key for Code Exchange )。
在授权码模式的交互工程中,有一个环节比较薄弱,这个环节就是用户在代理页面确认授权的时候,
容易受到恶意程序的攻击,从而导致授权码被恶意程序窃取,进而通过授权码窃取令牌,当然这个前
提也需要恶意程序已经植入到你的 PC 或手机当中。首先,来看一下官网中描述的恶意程序拦截攻击授
权码的交互图:
1 )客户端向认证服务器发起获取授权码请求时,跳转至授权确认页面,用户通过用浏览器在授权页 面进行授权确认。
2 )授权页面向认证服务器提交客户端参数和授权范围。
3 )认证服务器将授权码拼接在客户端注册的回调地址中返回给客户端。
4 )在步骤( 3 )认证服务器返回授权码的过程中,如果恶意程序截取到授权码,那么他接下来就可 以继续操作步骤(5 )、步骤( 6 )了。
为了减轻这种攻击,官方增加 PKCE 扩展,先来看一下官方的交互图:
A. 客户端通过 “/oauth2/authorize” 地址向认证服务器发起获取授权码请求的时候增加两个参数,即
code_challenge code_challenge_method ,其中, code_challenge_method 是加密方法(例如: S256 或 plain ), code_challenge 是使用 code_challenge_method 加密方法加密后的值。
B. 认证服务器给客户端返回授权码,同时记录下 code_challenge code_challenge_method 的值。
C. 客户端使用 code 向认证服务器获取 Access Token 的时候,带上 code_verifier 参数,其值为步骤 A 加密前的初始值。
D. 认证服务器收到步骤 C 的请求时,将 code_verifier 的值使用 code_challenge_method 的方法进行 加密,然后将加密后的值与步骤A 中的 code_challenge 进行比较,看看是否一致。
上面交互过程中,恶意程序如果在 B 处截获授权码后,使用授权码向认证服务器换取 AccessToken , 但由于恶意程序没有 code_verifier 的值,因此在认证服务器无法校验通过,从而获取 Access Token 失败。

设备授权码模式

设备授权码模式,是一种为解决不便在当前设备上进行文本输入而提供的一种认证授权模式,例如:
智能电视、媒体控制台、数字相框、打印机等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值