OAuth2

53 阅读2分钟

OAuth是一种授权机制,数据的所有者向第三方系统颁发短期的令牌token,用来代替密码。OAuth2.0详细规定了如何颁发令牌。一共有四种授权类型,适用于不同的场景。

token的特点:

(1)token是短期的,到期自动失效,用户自己无法修改(2)token可以被数据所有者撤销,撤销后立即失效(3)token有权限范围scope

四种授权类型

(1)授权码 authorization code 流程:第三方应用先申请一个授权码,再用该码获取令牌。 最常用的流程,安全性最高,适用于有后端的Web应用,所有与资源服务器的通信都在后端完成,可以避免令牌泄露。

image.png (2)隐藏式 implicit 直接向前端颁发令牌,没有授权码这个中间步骤。 适用于纯前端应用,没有后端,此时必须将令牌存储在前端。这种方式只适用于安全要求不高的场景,且令牌有效期必须非常短,通常就是会话期间有效。

image.png (3)密码式 password 流程:第三方应用拿到用户的用户名和密码,使用密码申请令牌。 这种方式需要提供用户名密码,风险很大,只适用于其他授权方式都无法使用的情况,且必须是用户高度信任的应用。 (4)客户端凭证 client credentials 流程:第三方应用使用clientId和client secret申请token 适用于没有前端的命令行应用,

令牌的使用

在请求第三方应用时,在请求的header中加上Authorization字段,传入token

令牌的更新

OAuth2.0允许用户自动更新令牌。具体方法是,在颁发令牌时,一次性颁发两个,一个用于获取数据,一个用于获取的新的令牌refresh_token。在令牌到期前,使用refresh_token去申请新令牌即可(grant_type=refresh_token)

www.ruanyifeng.com/blog/2019/0…