Keycloak и Docker — невозможно установить два типа URL-адресов

Я использую автономную версию keycloak в приложении на основе докеров.

Начиная с Keycloak 1.9.2 атрибут «auth-server-url-for-backend-requests» удален из свойств keycloak.

Это поле было создано мной для указания внутреннего IP-адреса сервера авторизации (внутри дока). Внешний (auth-server-url) используется для перенаправления.

Мой вопрос: как заменить прежний auth-server-url-for-backend-request, чтобы решить проблему наличия разных сетевых адресов внутри докера и за его пределами.


person Michal Borek    schedule 12.05.2016    source источник
comment
Вы добились каких-либо успехов в этом? Я могу столкнуться с подобной проблемой очень скоро.   -  person BatteryAcid    schedule 26.05.2016
comment
Привет, мы также используем общедоступный IP-адрес в докере. Это решает проблему двух сертификатов в случае использования SSL (поскольку вам понадобятся отдельные для внешнего и внутреннего интерфейсов). В Cloud env есть возможность получить общедоступный IP-адрес с помощью http-запроса, поэтому мы используем этот вызов API.   -  person Michal Borek    schedule 26.05.2016


Ответы (2)


Судя по следующим ссылкам, вы можете использовать тот же DNS для внешних запросов, что и для внутренних. Смотрите это:

проблема с маскировкой ключей

http://keycloak.github.io/docs/userguide/keycloak-server/html_single/index.html#d4e4114

person BatteryAcid    schedule 12.05.2016
comment
Спасибо за ответ. Да, я уже прочитал это. Но это сильно усложняет дело. Интересно, есть ли другое решение для этого. - person Michal Borek; 12.05.2016
comment
Может быть, было бы полезно уточнить, кто именно использует внутренний IP - откуда вы его используете? Другая серверная служба за пределами контейнера Docker или служба рядом с экземпляром Keycloak в том же контейнере Docker? - person BatteryAcid; 12.05.2016
comment
Здравствуйте, другой контейнер использует его напрямую, а браузер клиента использует общедоступный IP-адрес. Мое текущее решение состоит в том, чтобы использовать общедоступный IP-адрес, полученный из API ec2 (поскольку мы запускаем его в облаке), также в контейнерах. - person Michal Borek; 16.05.2016
comment
Вы можете попытаться создать как общедоступные, так и внутренние балансировщики нагрузки, которые указывают на один и тот же контейнер(ы) Keycloak-Docker (или группу автоматического масштабирования), а затем использовать внутренний DNS для запросов между контейнерами и общедоступный DNS для общедоступный код авторизации. - person BatteryAcid; 16.05.2016

Вы должны установить параметр KEYCLOAK_FRONTEND_URL в Dockerfile или docker-compose.yml (если вы их используете). В противном случае вам следует установить этот параметр в Keycloak General интерфейсе настроек.

Например: URL шрифта

Это довольно сложно, потому что вы не должны устанавливать реальный URL-адрес внешнего интерфейса, однако вы должны установить URL-адрес, который используется внешним интерфейсом. У меня та же проблема, поэтому вы можете увидеть несколько примеров в моем SO вопрос/ответ

person milanbalazs    schedule 09.06.2021