我尝试使用“使用Google登录”来登录两个单独的网站。截获来自第一个站点的身份验证代码,并将其与自动代码交换到第二个站点。两个站点都不允许我登录。我记得在RFC6749中没有指定要与任何身份绑定的auth代码,是为了提高安全性而实施的吗?
答案 0 :(得分:1)
这确实是OAuth2.0安全性的一部分:
将授权代码交换为访问令牌
我们准备结束流程。现在,该应用程序已经 授权代码,它可以使用它来获取访问令牌。
应用程序向服务的令牌端点发出POST请求 具有以下参数:
grant_type = authorization_code-这告诉令牌端点 应用程序正在使用授权码授予类型。
代码- 应用程序包括在 重定向。
redirect_uri-在以下情况下使用的相同重定向URI: 请求代码。某些API不需要此参数,因此您将 需要仔细检查您所使用的特定API的文档 访问。
client_id-应用程序的客户端ID。
client_secret- 应用程序的客户端密钥。这样可以确保请求得到 访问令牌仅由应用程序生成,而不是由 可能已经拦截了授权码的潜在攻击者。
答案 1 :(得分:1)
简短答案:授权代码已绑定到已颁发的客户端上
这是由RFC6749严格执行的,并在4.1.3. Access Token Request部分中进行了说明。而且,它是许多Checkes授权服务器执行的用于验证令牌请求的程序之一。规格说明如下,
授权服务器必须:
o 确保授权代码已发给已验证的用户 机密客户,或者如果客户是公开客户,请确保代码 已在请求中发给“ client_id”
因此,授权服务器将根据客户端类型对照客户端ID或客户端凭据交叉检查授权代码。
此外,授权码是一个临时机密,不得透露给其他方。安全注意事项的10.5. Authorization Codes部分对此进行了突出显示。