C# Windows身份基础-签署或更新索赔 我使用Windows身份基础管理我们网站的登录。

C# Windows身份基础-签署或更新索赔 我使用Windows身份基础管理我们网站的登录。,c#,wif,C#,Wif,当一个用户登录时,我正在使用他的请求中的一些信息将其放入声明中。 一切正常,但现在我需要管理此场景: 用户已登录、已识别且具有有效令牌 但用户决定再次浏览(通过从另一个站点重定向) 所以他的请求中的信息是不同的 我想要么 签下他-这样他自然会用他的新信息创建一个新标记 或者更新他现有的令牌 所以我的问题是: 我如何登录Windows身份基础? 或者如何更新现有的索赔 我尝试过以下代码: public void ExpireClaims(HttpContextBase httpContex

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

  • 用户已登录、已识别且具有有效令牌
  • 但用户决定再次浏览(通过从另一个站点重定向)
  • 所以他的请求中的信息是不同的
  • 我想要么
    • 签下他-这样他自然会用他的新信息创建一个新标记
    • 或者更新他现有的令牌
  • 所以我的问题是:

    <>我如何登录Windows身份基础?
  • 或者如何更新现有的索赔
  • 我尝试过以下代码:

      public void ExpireClaims(HttpContextBase httpContextBase)
        {
            var module =
                httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as
                WSFederationAuthenticationModule;
            if (module == null)
            {
                return;
            }
            module.SignOut(true);
        }
    
    但是模块总是空的

    我试过这个:

      public void FederatedSignOut(string replyUrl)
        {
            WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
        }
    
    但是当我这样做的时候,我会得到一个空引用执行选项


    非常感谢。

    实际上,注销只是删除cookie,因此:

    FormsAuthentication.SignOut

    FederatedAuthentication.SessionAuthenticationModule.SignOut

    FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie

    会有用的


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

    实际上,注销只是删除cookie,因此:

    FormsAuthentication.SignOut

    FederatedAuthentication.SessionAuthenticationModule.SignOut

    FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie

    会有用的


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

    谢谢,回答得很好!我正在使用FederatedAuthentication.SessionAuthenticationModule.SignOut。我注意到,仅仅使用FormsAuthentication.SignOut仍然允许用户访问联邦站点,而不是您当前所在的站点。我们也会调查最后的选择。再次感谢。在所有这些之后,上述方法只让我退出了当前的依赖方。他们没有让我退出所有依赖方。我必须在sts中实现自己的自定义联邦注销。这里是我的另一个问题的链接:另外,我发现一旦你创建了令牌,你就不能更新声明。从安全角度来看,这似乎是明智的行为!是-要获得更新的声明,您必须注销并重新登录。谢谢,回答得很好!我正在使用FederatedAuthentication.SessionAuthenticationModule.SignOut。我注意到,仅仅使用FormsAuthentication.SignOut仍然允许用户访问联邦站点,而不是您当前所在的站点。我们也会调查最后的选择。再次感谢。在所有这些之后,上述方法只让我退出了当前的依赖方。他们没有让我退出所有依赖方。我必须在sts中实现自己的自定义联邦注销。这里是我的另一个问题的链接:另外,我发现一旦你创建了令牌,你就不能更新声明。从安全角度来看,这似乎是明智的行为!是-要获取更新的索赔,您必须注销并重新登录。