2016-11-04 3 views
7

У меня есть два webapps. Каждый из них имеет интерфейс (AngularJS) и бэкэнд (Java). Каждый интерфейс имеет свой собственный файл конфигурации keycloak.json для открытого доступа. У каждого бэкэнд есть собственный файл keycloak.json для доступа к типу доступа. Каждое приложение frontend отлично работает с собственным бэкэндом. Моя задача - вызвать REST-вызов друг другу (backend для backend). Как я мог это достичь? Потому что на каждом бэкэнд REST-сервисы защищены, проверяя действительность маркера.Бэкэнд на бэкэнд-коммуникацию через REST с защищенным бэкендом Keycloak

+0

Хороший вопрос! Я думаю, что более подходящим местом для запроса такого вопроса является официальный [список рассылки пользователей Keycloak] (https://lists.jboss.org/mailman/listinfo/keycloak-user). – Yuri

ответ

0

Если все эти бэкэнд-услуги защищены keycloak, посмотрите расширение KeycloakRestTemplate RestTemplate в адаптере keycloak Spring. KeycloakRestTemplate импортируется как часть зависимости jar от keycloak-spring-security-adapter.

В основном, он использует KeycloakClientRequestFactory и внутренне добавляет заголовок авторизации (для текущего аутентифицированного принципала) ко всем запросам службы для обслуживания вызовов.

https://github.com/keycloak/keycloak/blob/master/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/client/KeycloakRestTemplate.java

+0

Но если я не использую Весну? Что делать, чем? – Eldar

+0

@ Эльдар, конечно, вам не нужно использовать весну. Вы можете взять токен доступа из исходного запроса из пользовательского интерфейса в бэкэнд и просто вставить его в заголовок исходящего запроса на другую бэкэнд-услугу. Если не весна RestTemplate, как вы делаете эту услугу для обслуживания вызова? –

+0

Я пробовал это без везения. Второй бэкэнд выдает исключение «Идентификатор токена отличается». Два проекта имеют разные имена поддоменов: backend1.project.com и backend2.project.com – Eldar

Смежные вопросы