在前一篇博客《OAuth2.0 原理简介》中我们已经了解了OAuth2.0的原理以及它是如何工作的,那么本篇我们将来聊一聊OAuth的一种授权许可方式:授权码(Authorization Code)
什么是Authorization Code ?简单来说授权码就是的在第三方应用程序请求Authrization Server来获取AccessToken之前的预先校验,增加了获取token的安全性。比如你吭哧吭哧写了一天的代码,急于回家吃上一口媳妇做的热饭。当你走到小区门口的时候你需要刷卡才能进入到小区,然后找到你家在哪一栋楼,几单元几号,然后掏出钥匙开门,才能回到家。在这个过程中授权码就相当于是你在用钥匙开门回家的前一步身份确认,如果你不是这个小区的,那你自然是没有办法进入到小区内部的。授权码方式是OAuth2.0最常用的一种授权方式,比如:QQ,豆瓣,新浪微博等用的都是这种方式。
授权码的工作流程解析
上图的流程表示了请求的全过程,需要注意的点是:
发起授权请求需要的参数如下:
对应步骤(C),客户端向Authorization Server发起请求的时候需要提供以下参数:
response_type:必选。值固定为“code”。
client_id:必选参数(第三方应用的标识ID,告诉服务器谁需要得到授权)
state:Client提供的一个字符串,服务器会原样返回给Client。
redirect_uri:必选参数(授权成功后的重定向地址)
scope:可选参数(表示授权范围)
完整URL如下所示:
GET /authorize?response_type=code&client_id=1&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Foauth2&scope=user,photo HTTP/1.1 Host: server.example.com