BootstrapContext in claimsprincipal null

本文关键字:null claimsprincipal in BootstrapContext | 更新日期: 2023-09-27 18:25:53

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

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

这就是我们现在获得代币的方式:

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

有人知道如何在不回收应用程序池或重建网站的情况下获得代币吗?

BootstrapContext in claimsprincipal null

有一种方法可以从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();