Указание схемы аутентификации для одного маршрута, который обрабатывается промежуточным ПО - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть новый ASP. Net Core 3 MVC сайт, к которому я добавил GraphQL с HotChocolate . У меня есть пользователи, выполняющие вход на сторону MVC с использованием аутентификации на основе cook ie с Auth0:

services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        })
    .AddCookie()
    .AddOpenIdConnect("Auth0", options =>
        {
            ...
        });

Но для запросов GraphQL мне нужна аутентификация JWT, для которой я бы использовал:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(config =>
        {
            ...
        });

Они оба независимо работают нормально. Cook ie auth позволяет использовать контроллер; JWT auth позволяет использовать GQL. Но я не могу понять, как получить cook ie auth для контроллеров и JWT для /graphql маршрута.

Небольшой контекст: HotChocolate использует собственное промежуточное ПО для обработки запросов, которые войти в маршрут /graphql. Это не на контроллере, поэтому я не могу просто указать схему с атрибутом Authorize, так как нет контроллера для его установки.

Подобные вопросы

(Было несколько других, в основном сосредоточенных на объединении REST и MVC, но оба они go для контроллеров так что сценарий немного другой.)

1 Ответ

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

Я не мог понять, как это сделать. Я просто разделил его на два проекта. Один предоставляет GraphQL API, а другой - веб-сайт. При этом каждый может иметь свою собственную схему авторизации.

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