Обработчик аутентификации не срабатывает (.NET Core 2.1 MVC) - PullRequest
0 голосов
/ 11 октября 2018

Мое приложение имеет несколько обработчиков аутентификации, настроенных при запуске:

services.AddAuthentication(sharedOptions =>
            {
                sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
            })                
            .AddCookie()
            .AddOpenIdConnect(options =>
            {
                ...
            })
            .AddApiKeyAuth();  

Аутентификация openid connect работает нормально, однако я хочу, чтобы один конкретный контроллер использовал определенную мной 'ApiKeyAuth'.Итак, в соответствии с документами:

https://docs.microsoft.com/en-us/aspnet/core/security/authorization/limitingidentitybyscheme?view=aspnetcore-2.1&tabs=aspnetcore2x

Я указал схему аутентификации, которую я хочу использовать для этого контроллера:

[Route("api/[controller]")]
[ApiController]
[Authorize(AuthenticationSchemes = ApiKeyAuthHandler.SchemeName)]
public class MyApiController : ControllerBase

Однако приложение просто кажетсяигнорируйте это, и похоже, что включается обработчик соединения openId.

Чего мне не хватает, почему он игнорирует мой атрибут?

1 Ответ

0 голосов
/ 11 октября 2018

Хорошо, я обнаружил, что проблема связана с глобальной политикой аутентификации.Я удалил строки ниже и добавил атрибут Auth вручную ко всем моим контроллерам (пока просто указываю альтернативную схему auth на моем другом контроллере), и теперь он ведет себя так, как я хочу.

services.AddMvc(config =>
        {
            Remove--> var policy = new AuthorizationPolicyBuilder()
                 .RequireAuthenticatedUser()
                 .Build();

            Remove --> config.Filters.Add(new AuthorizeFilter(policy));
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...