server.tomcat.protocol-header важен для тех, кто прерывает SSL на своем обратном прокси.

ешел через Google, не найдя ни одногобетон ответы илиПримерытак что опять пытаюсь везти сюда (часто везет).

Эта проблема

У меня есть один RESTful-сервис с пружинной загрузкой, работающий за обратным прокси-сервером apache. Эта служба RESTful работает только по протоколу HTTP. Скажем, он работает на локальном ip 172.s порт 8080.

Я также настроил обратный прокси Apache. Скажем, он работает на локальном IP 172.a и публичном IP 55.a. Этот прокси-сервер отвечает на оба порта 80, но весь трафик HTTP автоматически перенаправляется на 443.

У меня есть другой сервер, на котором работает автономный сервер Keycloak. Также этот сервер настроен как общедоступный через обратный прокси. Скажем, он работает на локальном IP 172.k. Этот сервер Keycloak работает только по HTTP. HTTP-запросы обрабатываются с использованием SSL через обратный прокси-сервер.

Наконец, у меня есть другой веб-приложение, работающее на локальном IP-адресе 172.f. Это веб-приложение frontend работает под управлением Nodejs, а также настраивается через обратный прокси-сервер. Он также работает только по протоколу HTTP, но клиент (браузер) использует SSL через обратный прокси-сервер, как и в случае с Keycloak и RESTful. Этот интерфейс использует сервис RESTful, а также настроен для аутентификации с использованием адаптера javascript keycloak.

Служба RESTful настроена как однонаправленная передача с использованием адаптера Spring Boot Keycloak, а приложение внешнего интерфейса настроено с типом доступа public.

Сервер службы RESTful, сервер Keycloak и интерфейсный сервер не являются общедоступными; они доступны только через обратный прокси. Но они могут общаться друг с другом (поскольку они находятся в одной частной сети).

В файле внешнего ключа keycloak.jsonauth-server-url настроен на URL проксиhttps://example.com/authи интерфейс может успешно получить действительный токен. Теперь, когда я пытаюсь использовать службу RESTful, я получаю сообщение об ошибке в адаптере RESTful из-за того, что издатель токена недействителен. В http-заголовке я, конечно, отправляюAuthorization: Bearer <token>, Причина, по которой я получаю эту ошибку, заключается в том, что в конфигурации RESTful keycloak я настроилauth-server-url использовать местный URLhttp://172.k:9080/auth, поэтому этот URL отличается от того, что в токене (которыйhttps://example.com/auth).

Вопрос

Я не могу включить то же самоеauth-server-url в сервисе RESTful, как и для внешнего интерфейса, потому что для этого потребуется также настроить HTTP для службы RESTful (потому что URL-адрес - https), и это сильно усложнит, в том числе необходимость установки сертификатов и тому подобного. Кроме того, я думаю, что неэффективно и нецелесообразно устанавливать SSL только на локальных серверах.

Поэтому мой вопрос заключается в том, как я могу заставить адаптер разговаривать с Keycloak без прохождения обратного прокси. Я хочу, чтобы адаптер RESTful говорил с сервером Keyclok для проверки токена черезauth-server-url: http://172.k:9080/auth.

Ранее был другой URL-адрес для бэкэнда, который был удален:https://issues.jboss.org/browse/KEYCLOAK-2623

Ответы на вопрос(3)

Ваш ответ на вопрос