1

在我们使用 Windows Identity Foundation 的项目上工作。在测试注销解决方案时,我发现以下调用 http://rp/?wa=wsignoutcleanup1.0不会删除 RP 上的 FedAuth cookie。这反过来又使用户在 RP 上保持登录状态。

为了纠正这种情况,我在 Global.asax 中添加了以下代码:

protected void Application_Start()
{
    FederatedAuthentication.WSFederationAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(WSFederationAuthenticationModule_SigningOut);
}

void WSFederationAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
}

但是WIF不应该自动处理这个吗?或者这是这样做的方法?

4

2 回答 2

2

确保所有 url 大小写匹配,即使是 IIS 中的应用程序名称、网站名称大小写也应与 configs 中的 url 匹配。我很难追查到这一点。请参阅此处:wasignoutcleanup 问题

于 2011-07-21T12:09:52.077 回答
2

同意@Anton。它应该适用于 WIF cookie。但它不会清理您自己的会话。

如果你有额外的东西要清理,那么你需要做额外的工作。需要注意的是会话对象不能从任何 WIF 事件处理程序中获得。因此,例如,您不能从WSFederationAuthenticationModuleSigningOut调用Session.Abandon()。通常,您重定向到另一个页面以进行最终清理。此处提供了一个示例:http: //claimsid.codeplex.com(示例 #1)

于 2011-05-31T16:30:12.267 回答