DotNetOpenId - 通过程序化和Web登录获得重放攻击失败

时间:2009-07-24 12:01:39

标签: .net openid dotnetopenauth

我正在为系统添加可选的OpenID身份验证。使用DotNETOpenID,一切顺利。然而,我在以下情况下遇到了问题:

  1. 用户使用标准登录(FormsAutentication)
  2. 登录Web应用程序
  3. 用户将一些OpenID与帐户相关联(我们使用程序化OpenID登录来获取声明的身份)
  4. 用户注销FormsAuthentication并使用OpenID重新登录(使用Login控件)。
  5. 在最后一步,我们收到重播攻击错误。我怀疑OpenID会在应用程序商店中保留一些信息(用于请求),这些信息用于获取上一个请求,而不是启动新请求。

    有人可以帮助解决这个问题吗?

    如果问题是我如何理解它,我怎样才能在使用程序化登录成功将OpenID绑定到帐户后清理此特定状态信息(假设我手头有成功的请求)?

2 个答案:

答案 0 :(得分:2)

您正在测试哪个提供商?老实说,在这种情况下,它听起来像是最可能有罪的一方,因为它构成了openid.response_nonce值。另一个可能的地方是你(偶然)在第一次和第二次登录之间的URL中维护所有openid。*查询字符串参数?例如,在用户输入OpenID之前的第二个登录页面,是否在页面的URL中打开了openid。*参数?如果是这样,那可能是问题所在,并且可以通过程序化页面修复它,导致在登录尝试后清除重定向以摆脱它们。

答案 1 :(得分:0)

好的,在第一次OpenID分配和实际身份验证之间添加Session.Abandon()(以及稍微清理auth逻辑)后,实际问题似乎消失了。