小编sam*_*dar的帖子

如何将“AzureAd”详细信息显式传递给 AddMicrosoftIdentityWebApi 方法以进行令牌验证

我正在使用Microsoft.Identity.Web库来验证 .Net Core Web API 中的令牌。

public void ConfigureServices(IServiceCollection services)
{
        ------------

    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(Configuration);

        ------------
}
Run Code Online (Sandbox Code Playgroud)

但根据此处的文档,我需要通过 IConfiguration 实例将AzureAd(一个包含tenantId、ClientId、Domain、Instance 等的对象)对象传递给AddMicrosoftIdentityWebApi方法。截至目前,此方法尝试从本地 appsettings.json 文件加载此对象。我想将这些详细信息显式传递给该方法,AddMicrosoftIdentityWebApi因为我们没有在本地 appsettings.json 文件中存储任何键值(所有键值均来自 Consul 和 Vault)。

我尝试覆盖配置对象但无法做到。

如何将此 AzureAd 对象传递给AddMicrosoftIdentityWebApi方法,以便它可以验证令牌以及缺少什么?

更新:嘿..我设法显式传递这些值。

Action<JwtBearerOptions> configureJwtBearerOptions = Test1;
static void Test1(JwtBearerOptions t1)
{
    t1.Audience = $"{appSettings.adCredentials.Instance}/{appSettings.adCredentials.TenantId}";
    t1.TokenValidationParameters.ValidAudiences = new string[] {
        appSettings.adCredentials.ClientId,
        $"api://{appSettings.adCredentials.ClientId}"
    };
}

Action<MicrosoftIdentityOptions> configureMicrosoftIdentityOptions = Test2;
static void Test2(MicrosoftIdentityOptions t2)
{
    t2.TenantId = appSettings.adCredentials.TenantId;
    t2.ClientId = …
Run Code Online (Sandbox Code Playgroud)

c# access-token asp.net-identity asp.net-core microsoft-identity-platform

7
推荐指数
1
解决办法
1万
查看次数