Я начал использовать IdentityServer4, используя пример ASP.NET Identity and Entity Framework.
Существует приложение MVC, которое использует IdentityServer для получения токена доступа, используя типы разрешений «учетные данные клиента и гибридные», и использует этот токен доступа для вызова API.
Решение выглядит так:
- Проект Identity Server
- Проект MVC
- API Project
Я собираюсь добавить новый частный API, но я бы хотел ограничить это, чтобы только приложение MVC могло вызывать его, и только на стороне сервера.
Моя первоначальная идея заключалась в том, чтобы добавить новую область API для этого частного API и передать эту область только приложению MVC. Проблема в том, что я понимаю, что токен доступа свободно доступен для пользователя из приложения MVC, и поэтому он может получить доступ к токену и, следовательно, вызвать частный API со своими собственными параметрами.
Каким было бы предлагаемое решение для защиты API, чтобы злоумышленник мог получить токен доступа и предоставить доступ к API?
Нужно ли мне создавать нового клиента на основе «учетных данных клиента», который используется приложением MVC? Было бы немного странно, если бы проект MVC использовал два разных клиента для одного и того же API?
Для получения информации, AddAuthentication в приложении MVC выглядит следующим образом:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
Я полагаю, что должно быть похоже, если не то же самое, что и образцы IdentityServer.