Windows身份基础-注销或更新声明

本文关键字:更新 声明 注销 身份 Windows | 更新日期: 2023-09-27 18:13:56

我使用Windows Identity foundation管理登录到我们的网站。

当用户登录时,我正在使用他的请求中的一些信息放入声明中。一切正常,但现在我需要管理这个场景:

  1. 用户已经登录,认证并且有一个有效的令牌。
  2. 但是用户决定再次浏览(通过从另一个站点重定向)
  3. 所以他的请求信息是不同的。
  4. 我想要
    • 签出他-这样他就可以用他的新信息自然地创建一个新的令牌
    • 或者更新他现有的令牌。

我的问题是:

  1. 我如何退出Windows身份基础?
  2. 或如何更新现有索赔?

我试过这个代码:

  public void ExpireClaims(HttpContextBase httpContextBase)
    {
        var module =
            httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as
            WSFederationAuthenticationModule;
        if (module == null)
        {
            return;
        }
        module.SignOut(true);
    }

但是module总是null。

和我试了这个:

  public void FederatedSignOut(string replyUrl)
    {
        WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
    }

但是当我这样做时,我得到一个空引用异常。

Windows身份基础-注销或更新声明

实际上sign-out就是删除cookie所以:

FormsAuthentication.SignOut

FederatedAuthentication.SessionAuthenticationModule.SignOut

FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie

或者使用FederatedPassiveSignInStatus(应该在工具箱中)。将属性SignOutAction设置为FederatedSignOut,控件也将清除STS会话。