Cookies Windows Identity Foundation:如何删除服务器端的STS令牌cookie
我正在尝试删除服务器端的WIF STS令牌cookie,但无法将其删除。它仅在客户端浏览器上工作,而不在服务器上工作。过去几天我一直在网上搜索,但没有找到解决办法 我发现并尝试过的一些事情运气不佳: FederatedAuthentication.SessionAuthenticationModule.SignOut()-FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete() var test=HttpContext.Current.ApplicationInstance.Modules.Get(“WSFederationAuthenticationModule”)为Microsoft.IdentityModel.Web.WSFederationAuthenticationModule; 测试。注销(真)//抛出一个空错误Cookies Windows Identity Foundation:如何删除服务器端的STS令牌cookie,cookies,token,wif,Cookies,Token,Wif,我正在尝试删除服务器端的WIF STS令牌cookie,但无法将其删除。它仅在客户端浏览器上工作,而不在服务器上工作。过去几天我一直在网上搜索,但没有找到解决办法 我发现并尝试过的一些事情运气不佳: FederatedAuthentication.SessionAuthenticationModule.SignOut()-FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();Federated
上述代码行在我的STS web中被调用,用于处理注销。如果有人有任何建议,我将不胜感激。谢谢看起来您正在使用WIF 1.0(3.5) 使用 这将向STS发送wsignout消息,STS删除Cookie,向RP发送wsignoutcleanup,RP删除Cookie
您正在进行联合登录,因此请使用联合注销。nzpcmad-感谢您的回复。我试过你的评论,但仍然不适合我。我的STS服务器会话cookie仍处于活动状态 正如我在伪代码中所做的那样:
您还有其他建议或意见吗?谢谢使用默认配置,WIF将序列化cookie中的标识,并且服务器端没有存储任何状态。这意味着您可以在WIF令牌的生存期内重播cookie 您可以将WIF(4.5)设置为使用“引用模式”,该模式将在内存缓存中缓存标识,并且仅在cookie中包含引用。使用此设置,注销时将在服务器上清除缓存的标识 您可以在此处找到详细信息:
在负载平衡的情况下,您必须针对共享存储实现自己的
会话安全缓存
。这里有一个指针:所以您使用的是自定义STS?如果您在注销后再次在浏览器中导航到RP,您必须进行身份验证吗?您确定浏览器不会通过WIA自动再次记录您吗?顺便问一下,您不应该通过创建另一个问题来回答。您应该扩展原始问题并添加注释我以前的回答对于注释框来说太长:)n想要获得尽可能多的信息…回答您的问题:-是的,使用WIF我创建了一个web作为我的STS(基本上是为了验证和颁发安全令牌。)-如果我在注销后导航到RP,是的,我必须再次进行身份验证。如果我让Fiddler在后台运行,注销我的RP。返回Fiddler并使用Auth Cookie重播http请求,它会将SAML传递回我。如果我通过VS调试器进入我的STS代码,我仍然通过身份验证。我的期望-重定向到登录页面。而不是su你是我做错了什么…klings我在WIF 4.5中尝试了你的建议,效果很好。但不幸的是,我需要WIF 3.5的解决方案,而此“isReference”模式属性不可用。在WIF 3.5上运行的RP中,我尝试了“IsSessionMode”但它似乎不起作用。下面是我添加到RP web中的Global.asax.cs文件中的代码:void WSFederationAuthenticationModule_SessionSecurityTokenCreatedEventArgs e(对象发送方,SessionSecurityTokenCreatedEventArgs e){FederatedAuthentication.SessionAuthenticationModule.IsSessionMode=true;}除了迁移4.5之外,您还有其他解决方案吗
var authModule = FederatedAuthentication.WSFederationAuthenticationModule;
WSFederationAuthenticationModule.FederatedSignOut(new Uri(authModule.Issuer), new Uri(authModule.Realm));
return null;
}