ASP.NET Web API - разделение клиента, аутентификации и сервера ресурсов - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь собрать простой пример приложения, которое использует OAuth 2 для авторизации.Я хочу создать 3 отдельных проекта:

  1. Клиентское приложение, которое вызывает службу проверки подлинности для проверки подлинности и получения токена носителя.
  2. Служба проверки подлинности, которая принимает учетные данные и выдает токены.
  3. Служба веб-API, которая извлекает данные для клиента, но только если клиент, запросивший данные, прикрепил токен к запросу.

Основной поток будет:Пользователь взаимодействует с клиентским приложением и вводит свои учетные данные.Это отправляется службе аутентификации, которая аутентифицирует и выдает токен.Клиент прикрепляет токен к запросу к службе веб-API для получения некоторых данных.

Я нашел это пошаговое руководство и образец данных, который содержит все эти части, и это работает.

Проблема с ним, и практически с каждым пошаговым описанием на docs.microsoft.com, заключается в том, что он объединяет все части в один проект VS.Это не только нереально в производственных приложениях, но также очень трудно определить, какой код необходим в каждом из этих трех приложений.

Поэтому я решил разделить этот код на 3 различных проекта VS.Сначала я выделил клиентский код (в основном JavaScript и Knockout).Все работает.

Теперь мне нужно разделить оставшийся код на мою службу аутентификации и службу извлечения данных из Web API.Вот где все, кажется, идет не так.Когда я создаю свой сервис Web API, я могу запустить все.Но как только я добавляю к нему атрибут [Authorize], я получаю 401.Сначала кажется, что аутентификация работает правильно, но как только я снова вызываю свой Web API, 401.

Поэтому я добавил этот код в проект Web API, думая, что он подключит то, что мне нужно:

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

Но это приводит к новым ошибкам.

Я что-то упускаю из виду?Есть ли еще одно подробное руководство, демонстрирующее, как разделить эти отдельные функции на отдельные проекты?

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