gpt4 book ai didi

asp.net-core - 从配置文件配置 JwtBearerOptions

转载 作者:行者123 更新时间:2023-12-05 01:14:23 26 4
gpt4 key购买 nike

我正在尝试查找如何配置 jwt 承载及其 JwtBearerOptions 的文档在 asp.net 核心中,使用 Microsoft 预定义的配置部分/键从配置文件中获取。 Mucrosoft 文档中没有关于这可能与否的解释。我觉得这应该是可能的,因为 .net 核心生成中的所有内容都在使用选项模式。

Here is an example如何使用相同的技术来配置 Kestrel 主机。

enter image description here

最佳答案

这不是最初问题的真正答案。不过,我对这个解决方案非常满意。

在深入研究 AspNetCore 源代码几个小时后,我发现 JwtBearerOptions 是 added to the DI as a named options .这意味着您不能在不编写代码的情况下从配置文件提供配置。不过,我找到了一个可接受的解决方案,适用于大多数情况。

我没有所有可用键的列表,这里的示例只显示了其中两个。您可以检查 JwtBearerOptions 的公共(public)属性并将它们添加到 appsettings.json 中。它们将被框架挑选和使用。

请参阅下面的代码和那里的评论,了解其工作原理的详细信息:

appsettings.json

{
"Cronus": {
"Api": {
"JwtAuthentication": {
"Authority": "https://example.com",
"Audience": "https://example.com/resources"
}
}
}
}

Startup.cs

public class Startup
{
const string JwtSectionName = "Cronus:Api:JwtAuthentication";

private readonly IConfiguration configuration;

public Startup(IConfiguration configuration)
{
this.configuration = configuration;
}

public void ConfigureServices(IServiceCollection services)
{
// Gets the settings from a configuration section. Notice how we specify the name for the JwtBearerOptions to be JwtBearerDefaults.AuthenticationScheme.
services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, configuration.GetSection(JwtSectionName));

// OR

// Gets the settings from a configuration. Notice how we specify the name for the JwtBearerOptions to be JwtBearerDefaults.AuthenticationScheme.
services.Configure<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme, configuration);

services.AddAuthentication(o =>
{
// AspNetCore uses the DefaultAuthenticateScheme as a name for the JwtBearerOptions. You can skip these settings because .AddJwtBearer() is doing exactly this.
o.DefaultAuthenticateScheme = Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer();
}
}

关于asp.net-core - 从配置文件配置 JwtBearerOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58729977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com