Как отключить схему аутентификации по умолчанию, если указана схема не по умолчанию - PullRequest
1 голос
/ 31 марта 2020

У меня есть две схемы аутентификации в моем приложении

services.AddAuthentication("default")
    .AddJwtBearer("default", options =>
    {
        // some options
    })
    .AddJwtBearer("non-default", options =>
    {
        // some other options
    });

Идея состоит в том, чтобы использовать большинство контроллеров по умолчанию, а когда требуется нестандартное значение, явно указать нужную схему с помощью [Authorize(AuthenticationSchemes = "non-default")]. Проблема в том, что схема по умолчанию вызывается всегда, даже если установлена ​​не-по умолчанию. Он запускается и завершается ошибкой, и после этого запускается и работает правильная схема. Но это приводит к полному журналу сообщений «Не удалось проверить токен». Есть ли способ отключить схему по умолчанию?

Я использую net core 2.2, но с учетом перехода на 3.1.

1 Ответ

0 голосов
/ 13 апреля 2020

Я нашел решение, предоставив не метод аутентификации по умолчанию, а политику авторизации по умолчанию.

services.AddAuthentication()
    .AddJwtBearer("defaultScheme", options =>
    {
        // some options
    })
    .AddJwtBearer("nonDefaultScheme", options =>
    {
        // some other options
    });

services.AddAuthorization(opts =>
{
    opts.DefaultPolicy = new AuthorizationPolicyBuilder()
                                .AddAuthenticationSchemes("defaultScheme")
                                .RequireAuthenticatedUser()
                                .Build();
    opts.AddPolicy("non-default", policy => policy
                                .AddAuthenticationSchemes("nonDefaultScheme")
                                .RequireAuthenticatedUser());
});

После этого [Authorize] и [Authorize("non-default")] работают нормально, вызывая только одну из аутентификаций. схемы.

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