我正在为系统添加可选的OpenID身份验证。使用DotNETOpenID,一切顺利。然而,我在以下情况下遇到了问题:
在最后一步,我们收到重播攻击错误。我怀疑OpenID会在应用程序商店中保留一些信息(用于请求),这些信息用于获取上一个请求,而不是启动新请求。
有人可以帮助解决这个问题吗?
如果问题是我如何理解它,我怎样才能在使用程序化登录成功将OpenID绑定到帐户后清理此特定状态信息(假设我手头有成功的请求)?
答案 0 :(得分:2)
您正在测试哪个提供商?老实说,在这种情况下,它听起来像是最可能有罪的一方,因为它构成了openid.response_nonce值。另一个可能的地方是你(偶然)在第一次和第二次登录之间的URL中维护所有openid。*查询字符串参数?例如,在用户输入OpenID之前的第二个登录页面,是否在页面的URL中打开了openid。*参数?如果是这样,那可能是问题所在,并且可以通过程序化页面修复它,导致在登录尝试后清除重定向以摆脱它们。
答案 1 :(得分:0)
好的,在第一次OpenID分配和实际身份验证之间添加Session.Abandon()(以及稍微清理auth逻辑)后,实际问题似乎消失了。