Обновление Asp.Net Ядро 2.2-3.1 с использованием Microsoft.Идентификация.Web — обработчик аутентификации не зарегистрирован для схемы ‘AzureADJwtBearer’

#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 .

Спасибо,