1

我在另一个 SO线程中找到了这个:

脚步:

  1. 用户连接到启用 OpenID 的网站。
  2. 用户输入凭证信息。
  3. 使用 BASE64 进行 POST(网站到提供商)
  4. 构建了一个答案(包含过期)
  5. 该网站将用户重定向到提供商以登录。
  6. 用户输入密码并提交。
  7. 验证完成。
  8. 登录!

步骤 6-8 是如何保护的?在我看来,客户端正在向提供者进行身份验证并将结果报告给我们的服务器。

是什么阻止客户端伪造身份验证结果?

4

1 回答 1

2

首先,验证结果由提供者加密签名。还有其他安全措施可以防止其他攻击。

引用OpenID 2.0 规范,第 11 节

当依赖方收到一个肯定的断言时,它必须在接受断言之前验证以下内容:

  • “openid.return_to”的值与当前请求的 URL 匹配(第 11.1 节
  • 发现的信息与断言中的信息相匹配(第 11.2 节
  • 尚未从该 OP 接受具有相同“openid.response_nonce”值的断言(第 11.3 节
  • 断言上的签名是有效的,所有需要签名的字段都已签名(第 11.4 节

客户端当然可以发送虚假的身份验证结果,但不会通过验证。

于 2013-03-24T10:44:59.717 回答