Я следую руководству Microsoft здесь: https://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1
После того, как я запустил свой API и попал в конечную точку, я получаю сообщение об ошибке
InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can be set using either AddAuthentication(string defaultScheme) or AddAuthentication(Action<AuthenticationOptions> configureOptions).
Однако глядя на руководство, похоже, нет мест, где они использовали бы AddAuthentication
Я заметил, что могу избежать ошибки, если я успешно проведу проверку политики, например
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MinimumRequirement requirement)
{
//If I comment this line I get error
context.Succeed(requirement);
return Task.CompletedTask;
}
РЕДАКТИРОВАТЬ: Вот мой запуск:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddHttpContextAccessor();//Required for using IHttpContextAccessor
services.AddSingleton<IAuthorizationHandler,MinimumHandler>();
services.AddAuthorization(options => options.AddPolicy("MinimumPolicy", policy => policy.Requirements.Add(new MinimumRequirement())));
}
Вот мой обработчик:
public class MinimumHandler : AuthorizationHandler<MinimumRequirement>
{
IHttpContextAccessor _httpContextAccessor = null;
public MinimumHandler(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MinimumRequirement requirement)
{
//If I uncomment this line everything works fine
//context.Succeed(requirement);
return Task.CompletedTask;
}
}