Должен ли я делать сторонние вызовы API в бэкэнде или во внешнем интерфейсе? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть API, и этому API нужны некоторые данные из API Microsft Graph. Я думал о реализации конечной точки в моем API для обновления токена и использования этого токена для выполнения вызовов из внешнего интерфейса. Я не знаю, является ли это оптимальным или безопасным, поэтому мой вопрос.

РЕДАКТИРОВАТЬ 1: Чтобы лучше понять, что у меня есть, это логика, которая у меня есть на данный момент. Скажите, если это правильно, пожалуйста.

Пользователь запрашивает конечную точку авторизации моего API, которая имеет секретный ключ Azure, затем пользователь перенаправляется на страницу входа в систему Microsft oAuth. После входа в систему oAuth Microsoft перенаправляет пользователя в мой API, где сохраняет маркеры JWT в файлах cookie пользователя, чтобы пользователь мог обновить токен в любое время.

Чтобы обновить токен, пользователь просто вызывает myapi.com/auth/microsoft/token, где у него есть секретный ключ, и он обновляется.

1 Ответ

0 голосов
/ 30 августа 2018

Как правило, я бы рекомендовал всегда делать сторонние звонки с бэкэнда. Это дает вам больше контроля и позволяет избежать любых перекрестных осложнений.

Вы также хотите знать о любых ключах API. Большинству API требуется ключ для доступа, и часто этот ключ является закрытым, и вы не захотите делиться им с клиентом.

В API MS Azure есть приложение и секретный токен. Вы не можете предоставить секретный токен клиенту. Для вызова напрямую с клиента вы должны использовать OAuth для получения токена JWT, а затем вы можете вызвать из SPA в API MS Web с этим токеном.

https://docs.microsoft.com/en-us/azure/active-directory/develop/authentication-scenarios#single-page-application-spa

Напротив, существуют другие сторонние API, которые предназначены для вызова только из внешнего интерфейса. Например, Stripe - это API обработки платежей, в котором пользовательский интерфейс может напрямую вызывать Stripe, а затем информация о платеже клиента никогда не передается в главное приложение, а только в Stripe. Это повышает безопасность.

...