我正在向系统添加可选的 OpenID 身份验证。使用 DotNETOpenID 一切顺利。然而,当我遇到以下问题时:
- 用户使用标准登录 (FormsAutentication) 登录到 Web 应用程序
- 用户将一些 OpenID 与帐户相关联(我们在此处使用程序化 OpenID 登录来获取声明的身份)
- 用户注销 FormsAuthentication 并使用 OpenID 重新登录(使用 Login 控件)。
在最后一步,我们得到一个重放攻击错误。我怀疑 OpenID 在应用程序商店(用于请求)中保留了一些信息,这些信息用于获取上一个请求,而不是开始一个新请求。
任何人都可以帮助阐明这里的问题吗?
如果问题是我如何理解它,那么在使用编程登录成功地将 OpenID 绑定到帐户后,我该如何清理这个特定的状态信息(假设我手头有成功的请求)?