redirect_uri 对于 Google 获取令牌调用有什么意义?

问题描述 投票:0回答:2

我有一个使用 Google API 的网络应用程序。身份验证过程会两次调用 google,第一次调用

code
,第二次调用
code
来交换
token
。这两个调用都带有
redirect_uri
参数。第一个调用按照我的预期使用这个参数,重定向回
redirect_uri
,但是,第二个调用,获取令牌,不重定向,验证它似乎忽略这个参数,所以它有什么意义?

oauth-2.0 google-account
2个回答
4
投票

访问令牌请求中的

redirect_uri
参数在 OAuth 2.0 规范中被描述为必需参数。

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

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

0
投票

没有充分的理由。

如果攻击者已经将客户端误导到对抗性的redirect_uri,他们将在步骤D中知道这个redirect_uri,因此不会阻止他们获取访问令牌

我无法想象攻击者获得授权码但没有获得redirect_uri的场景

我之前在类似问题上说过“没有充分的理由”,但我的答案被删除了,所以我给 RFC 6749 的原作者 Dick Hardt 发了一封电子邮件,询问他这个问题。他的回应如下:

攻击者可能修改了发送到AS的redirect_uri,以便它可以获得响应并修改它。

事实证明,通过将redirect_uri传递到令牌端点似乎不会阻止攻击,我们正在考虑在OAuth 2.1中删除它。

© www.soinside.com 2019 - 2024. All rights reserved.