Я пытаюсь собрать простой пример приложения, которое использует OAuth 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));
Но это приводит к новым ошибкам.
Я что-то упускаю из виду?Есть ли еще одно подробное руководство, демонстрирующее, как разделить эти отдельные функции на отдельные проекты?