Схемы аутентификации / вызова по умолчанию не найдены, но они установлены при запуске - PullRequest
0 голосов
/ 07 января 2020

Пытаясь перенести веб-API. NET Framework на. NET Core 2.2, я столкнулся с некоторыми проблемами при настройке аутентификации с использованием AD. У старого приложения было бы что-то вроде этого:

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions
    {
        Tenant = "contoso.onmicrosoft.com",
        TokenValidationParameters = new TokenValidationParameters { ValidAudience = "1111..."}
    });

Способ использования API заключается в следующем: веб-приложение обрабатывает аутентификацию (получает JWT) и использует указанный токен с нашим API для определенных действий. При поиске в Интернете я нашел этот образец, который использует Microsoft.AspNetCore.Authentication.AzureAD.UI. Теперь я получил следующее:

appsettings.json:

{
    ...
    "AzureAd": {
        "Domain": "contoso.onmicrosoft.com",
        "Instance": "https://login.microsoftonline.com",
        "TenantId": "2222...",
        "ClientId": "1111..."
    }
}

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = AzureADDefaults.JwtBearerAuthenticationScheme;
        options.DefaultChallengeScheme = AzureADDefaults.JwtBearerAuthenticationScheme;
    });
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthentication();
    app.UseMvc();
}

Проблема заключается в том, что при использовании сгенерированного токена (это работает с приложением. NET Framework) Я получаю следующую ошибку: InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found.

1 Ответ

1 голос
/ 07 января 2020

Мне кажется, вы не добавили схему аутентификации Azure AD. Обычно это выглядит как services.AddAuthentication().AddAzureADBearer().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...