1

我们在 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;

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

4

1 回答 1

1

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

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

var builder = new StringBuilder();

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

var tokenXml = builder.ToString();
于 2013-08-05T11:22:26.843 回答