在OAuth 2.0流程中,授权服务器将授权代码发送到重定向端点,然后网页必须再次访问服务器以获取单独的访问令牌以查询受保护的API。
为什么必须有两个令牌?特别是有人可以提供没有这种设计而出现的安全攻击/漏洞示例。
有这篇文章Facebook OAuth 2.0 "code" and "token",但它并没有完全解释设计背后的原因。
答案 0 :(得分:2)
一个(授权代码)在前通道中交换,另一个(访问令牌)在反向通道中交换。最终目标是获取访问令牌。由于前端通道本质上更不安全,因此在前端通道中发送非常短暂的一次性使用临时凭证(即授权代码)是有意义的,Web服务器可以使用它来重复获得更长寿命的 - 反向通道中的可用访问令牌。该反向通道调用还允许Web服务器(或:客户端)向授权服务器验证自身,以增加与正确的一方打交道的保证。