【问题标题】:BootstrapContext in claimsprincipal null声明主体中的 BootstrapContext null
【发布时间】:2013-08-02 11:25:21
【问题描述】:

我们在 MVC 4 Web 应用程序中使用 WIF。我们还设置了使用 STS 的身份验证。

到目前为止,一切都很好。现在的问题是:当我们登录并返回网站时,我们可以看到我们的用户名。我们也可以注销。 由于安全原因,我们使用引导令牌来保护对 out API 的调用。问题是登录后引导令牌为 NULL,而声明存在。 当应用程序池被回收或在 Visual Studio 中重建网站时,令牌存在并显示在网站上。

这就是我们现在获取令牌的方式:

var claimsPrincipal = (ClaimsPrincipal)System.Web.HttpContext.Current.User;
var bootstrapContext = (BootstrapContext)claimsPrincipal.Identities.First().BootstrapContext;

ViewBag.Token = bootstrapContext.Token;

有没有人知道如何在不回收应用程序池或重建网站的情况下获取令牌?

【问题讨论】:

  • 您是否启用在 web.config 中保存引导令牌? ...

标签: c# twitter-bootstrap wif


【解决方案1】:

有一种方法可以从 BootstrapContext 上的 SecurityToken 属性中检索它,假设属性值不为空。

以下代码 sn-p 从安全令牌中提取 SAML 令牌并将其写入字符串构建器:

var builder = new StringBuilder();

using (var writer = XmlWriter.Create(builder)) {
    new SamlSecurityTokenHandler(new SamlSecurityTokenRequirement()).WriteToken(writer, bootstrapContext.SecurityToken);
}

var tokenXml = builder.ToString();

【讨论】:

  • 好的,我在一个测试应用程序中试过了,效果很好!谢谢!
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多