asp.net-mvc - ClaimsIdentity 上的 BootstrapContext 为 null

标签 asp.net-mvc .net-4.5 wif claims-based-identity ws-federation

我使用 .NET 4.5 创建了一个新的 ASP.NET MVC 应用程序。我已成功设置 STS 身份验证。身份验证流程工作正常,我能够在 Thread.CurrentPrincipal 上获取包含所需声明的 ClaimsIdentity。

现在我需要引导 token 来保护对我的服务层的调用。我已将 IdentityConfiguration 元素上的 saveBootstrapContext 设置为 true。

<system.identityModel>
    <identityConfiguration saveBootstrapContext="true">

但是,ClaimsIdentity 上的 BootstrapContext 属性始终为 null。

var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
var context = identity.BootstrapContext; // context is always null

我在这里遗漏了什么吗?这本来应该很简单:(

最佳答案

通过这些解决了它:

<system.identityModel>
    <identityConfiguration saveBootstrapContext="true" />
</system.identityModel>

还需要设置TokenValidationParameters.SaveSigninToken与JwtBearerOptions.SaveTokens不同:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions {
        Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
        TokenValidationParameters = new TokenValidationParameters {
            SaveSigninToken = true,               
            ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
        }
    }
);

关于asp.net-mvc - ClaimsIdentity 上的 BootstrapContext 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083885/

相关文章:

mysql - 如何在 mysql 过程中读取字典数据

c# - Html.DisplayNameFor() 使用动态计算的属性

c# - 在 ASP.NET Web 窗体中管理长时间运行的任务的策略

c# - 如何将两个版本的相同程序集从两个不同的子文件夹加载到两个不同的域中?

c# - 如何创建测试签名证书?

javascript - 如何使用 jqGrid 将结果集合显示到网格单元格

javascript - 如何在 ASP.NET MVC 应用程序中自动压缩和最小化 JavaScript 文件?

c# - 使用 Task.Run() 写入控制台失败

asp.net - FederatedAuthentication.WSFederationAuthenticationModule 在运行时为 null

.net - AzMan 与 Windows Identity Foundation