#asp.net-core #.net-core #msal
#asp.net-core #.net-core #msal
Вопрос:
Я нахожусь в процессе обновления Asp.Net Ядро 2.2 приложение к 3.1.
Мы используем Microsoft.Идентификация.Web для обработки проверки подлинности Azure AD. Я изменил нашу конфигурацию безопасности следующим образом:
Настраивает
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(configuration)
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
services.AddAuthentication()
.AddScheme<ApiKeyAuthenticationSchemeOptions, ApiKeyAuthenticationHandler
(AuthenticationSchemes.ApiKey, null);
И настройте
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseMiddleware<LogUsernameMiddleware>();
app.UseEndpoints(p =>
{
p.MapControllers();
});
Но выдает следующее исключение
System.InvalidOperationException
HResult=0x80131509
Message=No authentication handler is registered for the scheme 'AzureADJwtBearer'. The registered schemes are: Bearer, ApiKey. Did you forget to call AddAuthentication().Add[SomeAuthHandler]("AzureADJwtBearer",...)?
Source=Microsoft.AspNetCore.Authentication.Core
StackTrace:
at Microsoft.AspNetCore.Authentication.AuthenticationService.<AuthenticateAsync>d__13.MoveNext() in /_/src/Http/Authentication.Core/src/AuthenticationService.cs:line 67
Не уверен, какая часть не регистрирует параметры аутентификации / авторизации.
Спасибо,
Ответ №1:
Проблема была в нашем коде, мы использовали класс с const string для возврата ApiKey, AzureADJwtBearer или All в качестве схем аутентификации для контроллеров, но AzureADJwtBearer был заменен на просто Bearer .
Спасибо,