1

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

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

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

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

4

2 回答 2

5

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

   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 框架的其他一些部分。这绝对值得一读。

于 2010-04-19T19:08:02.020 回答
0

饼干有点奇怪。它们由浏览器管理,没有“方法”可以删除它们。只是从服务器端的 Request 或 Response 对象中删除它们并不会从客户端的浏览器中删除它们。

要“删除”一个 cookie,您必须将其过期日期设置为过去。

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

于 2010-03-15T19:23:05.473 回答