【问题标题】:Windows Identity Foundation: How to get new security token in ASP.netWindows Identity Foundation:如何在 ASP.net 中获取新的安全令牌
【发布时间】:2011-01-11 22:12:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: asp.net cookies wif windows-identity passive-sts


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      见:http://msdn.microsoft.com/en-us/library/ms178195.aspx

      【讨论】:

      • 我试过用这种方式删除 cookie,但看起来 WIF 框架中的某些模块不允许这样做。
      猜你喜欢
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2011-04-04
      • 2017-01-15
      • 2020-11-12
      • 2014-07-12
      • 2015-12-28
      • 2011-12-19
      相关资源
      最近更新 更多