Я пытаюсь реализовать две схемы аутентификации в моем приложении. В контроллере с атрибутом authorize я устанавливаю схему, которую контроллер должен использовать для аутентификации. регистрация auth:
Запуск:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureAuthentication();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
app.UseAuthorization();
}
}
AuthenticationExtensions.cs:
public static class AuthenticationExtensions
{
public static IServiceCollection ConfigureAuthentication(this IServiceCollection services)
{
services.AddAuthentication(AuthConstants.DefaultScheme)
.AddScheme<AuthenticationSchemeOptions, DefaultSchemeHandler>(AuthConstants.DefaultScheme, AuthConstants.DefaultScheme, null)
.AddScheme<AuthenticationSchemeOptions, IdentityAuthenticationHandler>(AuthConstants.IdentityScheme, AuthConstants.IdentityScheme, null);
services.AddAuthorization(options =>
{
options.AddPolicy("IdentityAuthPolicy", policy =>
{
policy.AuthenticationSchemes.Add(AuthConstants.IdentityScheme);
policy.RequireAuthenticatedUser();
});
});
return services;
}
}
В контроллере я определяю, какие схемы аутентификации use:
[Authorize(AuthenticationSchemes = AuthConstants.IdentityScheme)]
[ApiController]
[Route("[controller]")]
public class UsersController : ControllerBase
{}
Проблема: приложение пытается выполнить аутентификацию по схеме по умолчанию после сбоя, пробует ту, которая указана в атрибуте authorize. Я хочу, чтобы приложение использовало единственную схему аутентификации, которую я определил в атрибуте authorize. Кроме того, я пытался использовать политику, но результат был тот же.