Я перемещался через Google, не найдя какие-либо конкретные ответов или примеров, поэтому снова пытаюсь своей удачи здесь (часто повезти).Keycloak позади апача обратного прокси
Проблема
У меня есть один пружинный загрузочный RESTful сервис работает позади апача обратного прокси-сервера. Эта служба RESTful работает только с HTTP. Скажем, он работает на локальном порту ip 172.s 8080.
Я также настроил обратный прокси-сервер Apache. Скажем, он работает на локальном ip 172.a и общедоступном ip 55.a. Этот прокси отвечает на оба порта 80, но весь HTTP-трафик автоматически перенаправляется на 443.
У меня есть другой сервер, на котором работает автономный сервер Keycloak. Также этот сервер настроен на доступ общественности через обратный прокси . Скажем, он работает на локальном ip 172.k. Этот сервер Keycloak работает только по протоколу HTTP. HTTP-запросы обрабатываются с использованием SSL через обратный прокси-сервер.
Последнее, у меня есть другой интерфейс-webapp, работающий на локальном ip 172.f. Этот интерфейс frontend-webapp работает под Nodejs, а также настраивается через обратный прокси. Он также работает только с HTTP, но клиент (браузер) использует SSL через обратный прокси-сервер, как и для службы Keycloak и RESTful. Этот интерфейс использует службу RESTful и также настроен на аутентификацию с помощью адаптера javascript keycloak.
Служба RESTful сконфигурирована как переносная лента с использованием адаптера Spring Boot Keycloak, а приложение frontend настроено с открытым доступом.
Сервисный сервер RESTful, сервер Keycloak и внешний сервер не являются общедоступными; они доступны только через обратный прокси. Но они могут общаться друг с другом (поскольку они находятся в одной частной сети).
В файле frontend keycloak.json auth-server-url
установлен на прокси-адрес https://example.com/auth
, и интерфейс может успешно получить действительный токен. Теперь, когда я пытаюсь использовать службу RESTful, я получаю ошибку в адаптере RESTful, что маркер-маркер недействителен. В http-заголовке я, конечно же, отправляю Authorization: Bearer <token>
. Причина, по которой я получаю эту ошибку, заключается в том, что в конфигурации RESTful keycloak я сконфигурировал auth-server-url
, чтобы использовать локальный url http://172.k:9080/auth
, поэтому этот URL-адрес отличается от указанного в токене (который равен https://example.com/auth
).
Вопрос
я не могу включить тот же auth-server-url
в RESTful службы как для интерфейса, так что потребуется мне также установка HTTPs на RESTful службы (потому что URL-адрес является HTTPS), и это будет сложно усложнять материал, включая необходимость установки сертификатов и тому подобного. Также я считаю, что это неэффективно и нецелесообразно настраивать SSL на локальных серверах.
Итак, мой вопрос заключается в том, как я могу заставить адаптер поговорить с Keycloak, не пройдя через обратный прокси. Я хочу, чтобы адаптер RESTful разговаривал с сервером Keyclok для проверки токена через auth-server-url: http://172.k:9080/auth
.
Раньше был другой URL для внутреннего интерфейса, который получил удален: https://issues.jboss.org/browse/KEYCLOAK-2623
Вы пытаетесь установить для Web Origins значение *. Если я прав, у меня такая же проблема при доступе через кросс-домен – OkieOth
Да, я пробовал устанавливать веб-истоки на «*» без каких-либо успехов. – Moni