Сбой веб-API аутентификации Identity Server4

#c# #asp.net-mvc #razor #identityserver4

Вопрос:

У меня есть приложение, которое разбито на 3 уровня. У меня есть сервер идентификации 4, веб-API и приложение C # Razor / MVC (.NET 5), развернутые отдельно в одном домене. Существует обратная настройка прокси-сервера для маршрутизации запросов для каждого из них на свой собственный сервер. Итак www.somedomain.com/IdentityServer , www.somedomain.com/MVC и www.somedomain.com/api .

Я использую сервер идентификации для аутентификации, и мы можем успешно сделать это без проблем. Однако, когда я пытаюсь вызвать одну из конечных точек API (которые украшены атрибутом [Authorize]) из приложения C # Razor / MVC, я получаю сообщение «Ошибка авторизации! Ошибка «Данная политика не была предоставлена».

Когда я запускаю ту же конечную точку, которую использует приложение C # Razor, используя swagger / postman (после того, как я прошел авторизацию и получил токен) У меня нет проблем с возвратом правильных результатов, поэтому проблема, похоже, связана с моей аутентификацией между приложением Razor и веб-API.

Когда я запускаю эти 3 уровня локально в Visual Studio (все с localhost, но с другим номером порта), все работает просто отлично.

Любые мысли или дополнительная информация, необходимые, чтобы дать мне некоторые идеи о том, в чем может быть проблема? Заранее большое спасибо за вашу помощь.

Комментарии:

1. Сравните токены: содержат ли они одинаковые утверждения? Используете ли вы aud (аудиторию)? Запрашиваете ли вы правильные области, чтобы получить правильные требования аудитории? Вы настраиваете политики авторизации (sic)? Или просто роли?

2. Я сравнил токены между развернутой версией и версией локального хоста, и утверждения те же. Да, я использую aud, и они такие же. Я использую роли. Единственное различие, которое я вижу с файлами cookie между развернутым и локально запущенным сайтом, заключается в том, что в развернутой версии заблокирован файл cookie, в котором говорится: «Файлы cookie были заблокированы, потому что его путь не был точным совпадением с или супердиректорией или исправлением URL-адреса запроса».

3. Все пути к файлам cookie в запросе «/», кроме заблокированного, который является «/ IdentityServer», который является URL-адресом (www.somedomain.com/IdentityServer ) мы используем обратный прокси-сервер для маршрутизации запросов на другой сервер.