Интеграция Apache APISIX с Keycloak

У меня есть несколько микросервисов, которые проверяют и идентифицируют пользователя с помощью Keycloak, как показано ниже.

Интеграция Apache APISIX с Keycloak


Теперь я хочу разместить шлюз API Apache APISIX перед микросервисами.

Apache APISIX имеет плагин для Keycloak. Может ли подключаемый модуль сделать следующее, чтобы проверка была удалена из всех микросервисов?

  • Подтвердите access_token от пользователя
  • Если допустимо, перешлите запрос в микросервис.

Интеграция Apache APISIX с Keycloak


Примечание

Эта статья подробно описывает, как интегрировать плагин Keycloak, чтобы пользователю пришлось проходить аутентификацию с помощью Keycloak (используя один Keycloak client_id и client_secret). Однако в моем случае у каждого пользователя будут разные client_id и client_secret.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Микрофронтенды стали популярным архитектурным паттерном для веб-разработки. С появлением федерации модулей в Webpack 5 реализация микрофронтендов...
1
0
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Can the plugin do the following such that the validation is removed from all the microservices?

Да, оно может. Apache APISIX может проверять access_token, а также может добавлять user_info, id_token к восходящему потоку. Для получения более подробной информации вы можете обратиться к документации по подключаемым модулям Apache APISIX. https://apisix.apache.org/docs/apisix/plugins/openid-connect.

In my case, however, each user will have a different client_id and client_secret.

Теперь Apache APISIX не поддерживает установку более одного идентификатора клиента openid-connect в маршруте. Может быть, вы можете создать больше маршрутов, каждый маршрут для каждого клиента? И используйте Host, чтобы различать их.

Спасибо за ответ. Это работает, как и ожидалось. Более того, плагин openid-connect аутентифицирует access_token сгенерированные с использованием разных client_id и client_secret

Sahil Khanna 24.03.2022 11:55

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