Пример использования продукта управления API, когда серверный API существует в Интернете и защищен с помощью OAuth2.

Фон

Я работаю над проектом, в котором мы настраиваем интеграционную платформу/ESB, а также продукт управления API.

Стратегия состоит в том, чтобы иметь уровень интеграции, через который осуществляется большая часть интеграции. Это разделяет отдельные системы, позволяет контролировать доступ и мониторинг в одном месте.

Я тоже новичок в управлении API, но уже несколько лет работаю с интеграцией корпоративных приложений.

Сценарий

В первых интеграциях мы должны предоставить бэкэнд API через платформу управления API. Серверный API, а также вызывающее приложение существуют в Интернете, и серверный API защищен с помощью OAuth 2 (тип гранта = пароль). Однако учетные данные конечного пользователя не отправляются, это своего рода поток от машины к машине.

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

Проблема

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

Я разместил еще один вопрос (WSO2 APIM — серверная служба использует OAuth 2 с предоставлением пароля), который больше ориентирован на продукт, но я хочу параллельно спросить об этом сценарии в более широкой перспективе.

Возможное решение

Используйте ESB для передачи потока OAuth к серверному API и используйте продукт управления API в качестве фасада, где осуществляется управление аутентификацией и другими аспектами для вызывающих приложений.

Вопросы

  • Поскольку продукт управления API не поддерживает аутентификацию с помощью OAuth 2 по отношению к серверному API, мне интересно, необычен ли этот сценарий? т.е. чтобы абстрагироваться от проверки подлинности внутреннего API при использовании OAuth.
  • Является ли это вариантом использования продукта для управления API?
  • Является ли возможное решение разумным?

person ohlaj    schedule 28.09.2017    source источник


Ответы (1)


Есть два сценария, которые довольно распространены

                           ⌐---------------> internal services
consumer --> gateway --> esb --> gateway --> external services

а также

                           ⌐---------------> internal services
consumer --> gateway --> esb --------------> external services

первый предпочтительнее, если ваш шлюз имеет возможности OAuth (в вашем случае), потому что обычно шлюзы используются в качестве точек обеспечения безопасности, и в обоих случаях идея одна и та же, инкапсулировать сложность провайдера и сделать его функциональность доступной для остальных сервисы/потребители в вашем ESB.

Кстати, в облаке вам следует рассмотреть подход с использованием микросервисов вместо ESB, поскольку ESB плохо масштабируется.

person jmhostalet    schedule 29.09.2017