Authorization Code 方式适用于有自己的服务器的应用。之所以叫这个名字,是因为流程中引入了一个叫做 authorization code 的东西。这个东西是一个一次性的临时凭证,用来换取 access token 和 refresh token。
鉴权服务器提供了一个类似这样的接口:
https://www.xxx.com/exchange?code=&client_id=&client_secret=
需要传入 code、client_id 以及 client_secret(实际中通常不会放在url中传递)。验证通过后,返回 access token 和 refresh token。一旦换取成功,code 立即作废,不能再使用第二次。
为什么要引入一个一次性的 code?
先看流程图:
这个 code 的作用是保护 token 的安全性。上一节说到,Implicit 方式下,token 是不安全的。这是因为在 4 这一步当中直接把 token 返回给应用。而这一步容易被拦截、窃听。引入了 code 之后,即使攻击者能够窃取到 code,但是由于他无法获得应用保存在服务器的 client_secretÿ