OAuth 核心思想 为什么要通过Authorization Code获取Access Token

时间:2024-04-08 15:10:17
OAuth 2.0的运行流程如下图,摘自RFC 6749。

OAuth 核心思想 为什么要通过Authorization Code获取Access Token

OAuth运行流程
(A)用户打开客户端以后,客户端要求用户给予授权。

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

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

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

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

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


OAuth2中最典型的Authorization Code 授权模式,其大致流程如下

OAuth 核心思想 为什么要通过Authorization Code获取Access Token

核心思想:

oauth 的核心思想就是要让第三方在不知道用户名密码的情况下完成鉴权,但是没有密码用户名组合根本不可能有效鉴权, oauth 实际的过程是一个李代桃疆的手法,在第一方用你的原始用户名和密码组合,生成另外一对名称密码组合,这个阶段叫做获取 code 和 state,这对组合送到第二方也就是你的资源所在地,同样较验一遍,如果合格,给你生成一个带有时效性的 access token, 第三方在有效期内拿着这个 access token 跳过第一方直接请求第二方的资源,至于为什么不直接返回 access token? 是因为如果使用 code 方式的话,服务器获得用户授权后通过 302 跳转到你的 callback URI 上,并在 url query 上带上用于交换 accesd token 的 code ,你在浏览器地址栏就可以看到这个code ,已经暴露有可能被不法应用,所以在 url 上直接返回 access token 是不安全的,而client拿到code以后换取access token是client后台对认证服务器的访问,并且需要clientID和client secret,不依赖浏览器,access token不会暴露出去