Вы комментируете в исходном примере, показывает, что на самом деле зависит от службы
// это должно быть передано позже обработчику
Переместите службу в обработчикв качестве явной зависимости через внедрение в конструктор.
public class CustomBasicAuthenticationHandler : AuthenticationHandler<CustomBasicAuthenticationOptions> {
private readonly ICustomService customService;
public CustomBasicAuthenticationHandler(
ICustomService customService, //<-- NOTE
IOptionsMonitor<BasicAuthenticationOptions> options,
ILoggerFactory logger,
UrlEncoder encoder,
ISystemClock clock
)
: base(options, logger, encoder, clock) {
this.customService = customService;
}
//...
}
и рефакторинг регистрации
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//...
// Some DIs in ConfigureService
services.AddTransient<ICustomService, CustomService>(); //this should be passed later to handler
services.AddHttpContextAccessor();
//...
// Adding authentication in ConfigureServices
services.AddAuthentication("Basic")
.AddScheme<CustomBasicAuthenticationOptions, CustomBasicAuthenticationHandler>("Basic", null);
//...
}