Я использую Asp.net Core 3.1
. При создании нового веб-проекта с использованием Visual Studio мы выбираем шаблон 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
с пустым 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
и передавать параметры после их настройки. Но я хочу использовать реализацию Microsoft по умолчанию. И просто нужно обновить мой JwtBearerOptions
, который был передан AddJwtBearer
в качестве аргумента.