我正在使用Asp.net Core 3.1
. 在使用 Visual Studio 创建新的 Web 项目时,我们选择API
模板并将身份验证更改为Individual User Accounts
并配置Azure ADB2C
选项,最后创建项目。
在我们生成的Startup.cs
文件中,我们有以下函数:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(AzureADB2CDefaults.BearerAuthenticationScheme)
.AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));
services.AddControllers();
}
的实现AddAzureADB2CBearer()
可以在这里找到。这个实现有一行代码如下:
builder.Services.Configure(scheme, configureOptions);
builder.AddJwtBearer(jwtBearerScheme, o => { });
在上面的行中,它添加JwtBearer
了 empty JwtBearerOptions
。身份验证工作完美。但我想JwtBearerOptions
在以下代码行之后设置一些:
services.AddAuthentication(AzureADB2CDefaults.BearerAuthenticationScheme)
.AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));
执行上述两行后,有什么方法可以配置这些选项?我尝试了以下几行,但没有任何效果。
services.Configure<JwtBearerOptions>(options =>
{
options.TokenValidationParameters.ValidateIssuer = false; // accept several tenants (here simplified)
options.Events = new JwtBearerEvents
{
OnAuthenticationFailed = AuthenticationFailed
};
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateLifetime = true,
ValidateAudience = true,
ValidAudience = "myAudience"
};
});
请注意,我可以AddJwtBearer
在设置它们后使用函数和传递选项。但我想使用微软的默认实现。并且只需要更新作为参数JwtBearerOptions
传递给我的那个。AddJwtBearer