【发布时间】:2021-05-27 16:28:50
【问题描述】:
我有一个 asp.net 核心 web api。假设我想拥有两个版本的 api,这样,版本 1 将需要不记名令牌,而版本 2 将不需要裸令牌。
由于令牌配置代码驻留在 startup.cs 文件中,我如何有两个 startup.cs 文件来满足我上面的要求?我什至不确定拥有两个针对两个不同版本的 api 的 startup.cs 文件是否合法,因为配置 asp.net 核心 api 版本控制的代码也将驻留在 startup.cs 文件中。
让我知道有哪些选项可以满足我的上述要求。
我当前启用令牌身份验证的 startup.cs 文件如下所示..
public void ConfigureServices(IServiceCollection services)
{
services.Configure<AzureADSettings>(Configuration.GetSection("AzureAd"));
var azureADSettings = Configuration.GetSection("AzureAd").Get<AzureADSettings>();
var validAudience = new List<string>
{
azureADSettings.Audience
};
services.AddAuthentication(o =>
{
o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
o.Authority = $"{azureADSettings.Instance}/{azureADSettings.TenantId}/";
o.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = true,
//azureADSettings.Audience
ValidAudiences = new List<string>(validAudience)
};
});
}
【问题讨论】:
-
你能不能在appsettings中放一个像
"Auth": true这样的部分,然后调用Configuration.GetSection("Auth");找出这个版本是否使用了auth,然后在AddAuthentication之前放一个if语句
标签: asp.net-core asp.net-core-webapi