SPA, вызывающая WebAPI, вызывающая WebAPI

Я создаю SPA (javascript), который будет вызывать WebAPI A (.net MVC API) и который в свою очередь будет вызывать (на стороне сервера) WebAPI B (.net MVC API).

Все три объекта защищены ADFS4 (OAuth2). В моем рабочем процессе я хочу, чтобы WebAPI A вызывал WebAPI B от имени пользователя, который вошел в SPA. Читая различные документы Microsoft, я обнаружил, что сценарий, описанный в следующей статье, лучше всего подходит для моего случая:

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/ad-fs-on-behalf-of-authentication-in-windows-server

В статье предполагается, что клиентское приложение может выполнять грандиозный поток авторизации. Тем не менее, в моем случае я имею дело с SPA, который должен использовать неявный поток OAuth2. Кроме того, даже если бы я хотел использовать общий поток авторизации, мне все равно нужно было бы выполнить POST в конечной точке токена ADFS из SPA, что невозможно, поскольку ADFS4 не предлагает способ добавления заголовков CORS. Конечно, я мог бы развернуть прокси-сервер перед ним и добавить заголовки... Я еще не исследовал эту опцию.

Я нашел решение, чтобы сделать эту работу, но это больше похоже на хак; SPA во время входа в систему запрашивает два токена (1 для WebAPI A и 1 для WebAPI B) из ADFS4. Он передает оба токена в WebAPI A, который знает, что второй токен предназначен для доступа к WebAPI B.

Это решение кажется правильным? Должен ли я делать что-то по-другому?

Спасибо!

PS: 1) SPA не может получить прямой доступ к WebAPI B, поскольку он доступен только внутри. 2) Предположим, у меня есть полный контроль над разработкой на всех трех объектах.

1 ответ

Не рекомендуется использовать поток кода авторизации для приложения SPA, потому что вы должны действительно хранить секретный ключ, который может генерировать access_token, который в этом случае не является безопасным.

Я предлагаю вам использовать неявный поток для вашего спа-приложения, а между вашими серверами использовать поток кода авторизации, так что вы уверены в безопасности

Другие вопросы по тегам