上篇文章介绍了OAuth协议大致的工作流程。本文对这个过程做个细化。
我们已经知道,客户端在获得资源的访问令牌(token)前,需要获得授权服务器的授权。一个问题是,通信双方怎么保存这个授权的状态呢?也就是说,服务器给你授权了,怎么告诉你呢?这需要一个授权码(authorization code)。注意,这时候还没有token。简单地讲,授权服务器在通过资源拥有者的认证后,授权给客户端,返回一个跳转URI(redirect uri)。这个uri里面包含了一个授权码。客户端加载这个uri,拿到授权码,进而向授权服务器的token组件(token endpoint)发起请求,获得一个访问令牌。如图2.1所示。
下面来分析下具体的交互过程。授权服务器在接到来自客户端的授权请求后,会产生这样的响应:
一个来自授权服务器的HTTP响应header的内容如下: