3

我有一个使用 Google API 的网络应用程序。身份验证过程对 google 进行了两次调用,第一次获取 a code,第二次将 a 交换codetoken。两个调用都带有一个redirect_uri参数。第一次调用按我的预期使用这个参数,重定向回redirect_uri,但是,第二次调用,获取令牌,不重定向,验证它似乎忽略了这个参数,那么它有什么意义呢?

4

1 回答 1

4

访问令牌请求中的redirect_uri参数在OAuth 2.0 规范中被描述为 REQUIRED 。

其背后的原因在同一文档的10.6节中有详细描述。简而言之:

  1. 攻击者可以通过操纵request_uri授权请求来获取授权码。唯一能注意到这个技巧的两方是受害者(合法用户)和服务器。客户仍然不知道这些操作。
  2. 即使使用该代码,攻击者也无法将其交换为访问令牌,但它可以尝试通过代表自己发送带有被盗代码的“回调响应”来欺骗客户端。
  3. 如果客户端可以将收到的代码交换为令牌,它将授予攻击者访问受害者数据的权限。幸运的是,由于客户端redirect_uri与服务器看到的不匹配,请求将被拒绝。
于 2012-10-23T21:37:34.410 回答