我正在编写一个使用 Windows Identity Foundation 的 ASP.net 应用程序。我的 ASP.net 应用程序使用基于声明的身份验证以及被动重定向到安全令牌服务。这意味着当用户访问应用程序时,他们会自动重定向到安全令牌服务,在那里他们会收到一个安全令牌,该令牌可以向应用程序标识他们的身份。

在 ASP.net 中,安全令牌存储为 cookie。

我希望用户可以在我的应用程序中单击一些内容,该内容将删除 cookie 并将其重定向到安全令牌服务以获取新令牌。简而言之,让注销和以其他用户身份登录变得容易。我尝试删除代码中包含令牌的 cookie,但它以某种方式持续存在。

如何删除令牌以便用户可以再次登录并获取新令牌?

有帮助吗?

解决方案

我找到了解决方案。简而言之:

   Dim smartWsFederationAuthenticationModule As  _
        Microsoft.IdentityModel.Web.WSFederationAuthenticationModule = _
        HttpContext.Current.ApplicationInstance.Modules("WSFederationAuthenticationModule")
    smartWsFederationAuthenticationModule.SignOut(True)

浏览此处获取更多信息: http://garrettvlieger.com/blog/2010/03/refreshing-claims-in-a-wif-claims-aware-application/

我还发现我也可以获取 WIF 框架的其他一些部分的句柄。这绝对值得一读。

其他提示

Cookies是有点奇怪。它们是由浏览器管理,没有“方法”将其删除。刚刚从请求删除它们或响应在服务器侧对象不从在客户端浏览器中删除。

要“删除”你有一个cookie来它的截止日期设为过去。

请参阅: http://msdn.microsoft.com/en-us /library/ms178195.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top