Windows Identity Foundation:如何在服务器端删除STS令牌cookie

时间:2015-09-30 19:13:09

标签: cookies token wif

我正在尝试删除服务器端的WIF STS令牌cookie,但无法将其删除。它仅适用于客户端浏览器端而非服务器端。过去几天我一直在网上搜索,但还没有找到解决方案。

我发现并尝试没有运气的一些事情是: FederatedAuthentication.SessionAuthenticationModule.SignOut(); -FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete();

var test = HttpContext.Current.ApplicationInstance.Modules.Get(“WSFederationAuthenticationModule”)as Microsoft.IdentityModel.Web.WSFederationAuthenticationModule; test.SignOut(真); //抛出空错误

上述代码行在我的STS Web中处理注销。如果有人有任何建议我会非常感激。感谢

3 个答案:

答案 0 :(得分:0)

看起来您正在使用WIF 1.0(3.5)。

使用WSFederationAuthenticationModule.FederatedSignOut Method

这会向STS发送wsignout消息,STS删除cookie,向RP发送wsignoutcleanup,RP删除cookie。

您正在进行联合登录,因此请使用联合注销。

答案 1 :(得分:0)

nzpcmad - 感谢您的回复。我尝试了你的评论,它仍然不适合我。我的STS服务器会话cookie仍然存在。

正如我在此处所建议的那样是伪代码:

    注销方法

    上我的依赖方
  1. public ActionResult Logout() {

    var authModule = FederatedAuthentication.WSFederationAuthenticationModule;
        WSFederationAuthenticationModule.FederatedSignOut(new Uri(authModule.Issuer), new Uri(authModule.Realm));
    
        return null;
    }
    
  2. (看起来该方法基本上将此消息发送给我的sts-“... sso.local.com/?wa=wsignout1.0&wreply=http%3a%2f%2fclient1.local.com%2f HTTP / 1.1" )

    1. 在我的STS上(here-sso.local.com) 我查找wa = wsignout1.0并使用以下
    2. 处理我的注销

      FederatedAuthentication.SessionAuthenticationModule.SignOut(); FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete();

      然后通过在image-client1.local.com/?wa=wsignoutcleanup1.0中调用以下uri来清理依赖方

      在客户端浏览器端,一切都很好用。但是,如果我保留一个小提琴手跟踪并进入过去的请求,我看到我仍在我的STS中进行身份验证,这让我相信它,因为我的STS服务器端auth cookie仍然存在。

      您还有其他建议或意见吗?感谢

答案 2 :(得分:0)

使用默认配置,WIF将序列化cookie中的标识,并且服务器端没有存储状态。这意味着您可以在WIF令牌的生命周期内重播cookie。

您可以将WIF(4.5)设置为使用"参考模式",而不是将身份缓存在内存缓存中,并且只在cookie中包含引用。使用此设置,将在注销时在服务器上清除缓存的标识。

您可以在此处找到详细信息:http://brockallen.com/2013/02/10/beware-setting-properties-or-registering-events-on-the-sam-and-fam/

在负载均衡的情况下,您必须针对共享存储实施自己的sessionSecurityTokenCache。这是一个指针:https://msdn.microsoft.com/en-us/library/hh568669(v=vs.110).aspx