我有一个使用 Google API 的网络应用程序。身份验证过程对 google 进行了两次调用,第一次获取 a code
,第二次将 a 交换code
为token
。两个调用都带有一个redirect_uri
参数。第一次调用按我的预期使用这个参数,重定向回redirect_uri
,但是,第二次调用,获取令牌,不重定向,验证它似乎忽略了这个参数,那么它有什么意义呢?
问问题
332 次
1 回答
4
访问令牌请求中的redirect_uri
参数在OAuth 2.0 规范中被描述为 REQUIRED 。
其背后的原因在同一文档的10.6节中有详细描述。简而言之:
- 攻击者可以通过操纵
request_uri
授权请求来获取授权码。唯一能注意到这个技巧的两方是受害者(合法用户)和服务器。客户仍然不知道这些操作。 - 即使使用该代码,攻击者也无法将其交换为访问令牌,但它可以尝试通过代表自己发送带有被盗代码的“回调响应”来欺骗客户端。
- 如果客户端可以将收到的代码交换为令牌,它将授予攻击者访问受害者数据的权限。幸运的是,由于客户端
redirect_uri
与服务器看到的不匹配,请求将被拒绝。
于 2012-10-23T21:37:34.410 回答