Keycloak в Openshift, вызывается из модуля

У меня есть каверзный вопрос о Keycloak и Openshift.

Я настроил сервер Keycloak в установке Openshift Origin и настроил для него внешний маршрут.

Я также установил приложение nodejs в том же Openshift Origin, и я пытаюсь получить доступ к серверу Keycloak, используя его внешний маршрут DNS.

Сервер Keycloak доступен для внешнего доступа по адресу identity.myapp.com Мое приложение доступно для внешнего доступа по адресу app.myapp.com

Но когда мое приложение nodejs пытается получить токен с помощью конечной точки токена, оно застревает с ошибкой No route to Host.

Когда я вхожу в модуль приложения nodejs и проверяю внешнее DNS-имя, он реагирует правильно, но когда я пытаюсь выполнить команду wget, я также получаю сообщение об ошибке No route to Host.

Вот протокол моего теста:

sh-4.2$ ping identity.myapp.com  
PING identity.myapp.com (xx.xx.xx.xx) 56(84) bytes of data. 
64 bytes from xxx (xx.xx.xx.xx): icmp_seq=1 ttl=63 time=0.236 ms
64 bytes from xxx (xx.xx.xx.xx): icmp_seq=2 ttl=63 time=0.170 ms 
--- identity.myapp.com ping statistics --- 
2 packets transmitted, 2 received, 0% packet loss, time 1000ms 
rtt min/avg/max/mdev = 0.170/0.203/0.236/0.033 ms  
sh-4.2$ wget https://identity.myapp.com 
--2017-06-28 20:29:29--  https://identity.myapp.com/
Resolving identity.myapp.com (identity.myapp.com)... xx.xx.xx.xx  
Connecting to identity.myapp.com (identity.myapp.com)|xx.xx.xx.xx|:443... failed: No route to host.                                             

Я не могу вызвать сервер Keycloak, используя его внутреннее DNS-имя, он настроен для доставки токенов с его DNS-именем внешнего эмитента, и любой вызов к нему с другим именем приводит к ошибке Invalid token issuer (я открыл билет на github библиотеку, которую я использую, вы можете найти ее здесь

Моим окончательным решением было бы экстернализировать сервер Keycloak, но я бы потерял все преимущества, предлагаемые Openshift ...

Что я могу сделать, чтобы получить доступ к серверу Keycloak, используя его внешнее DNS-имя в HTTPS из модуля приложения?


person mrik974    schedule 28.06.2017    source источник
comment
В итоге сервер keycloak оказался вне инфраструктуры Openshift. Если кто-то придумает рабочее решение, я все равно буду рад попробовать его.   -  person mrik974    schedule 14.02.2018


Ответы (1)


Проблема может быть связана с маршрутизатором или с DNS. Вы пробовали установить внешнего поставщика DNS для своего приложения nodejs?

Я предполагаю, что у вас тоже настроен маршрут?

person monis    schedule 28.06.2017
comment
Я не пробовал устанавливать внешнего поставщика DNS для приложения nodejs. Это хорошо? А также, как я уже сказал, я настроил маршрут для сервера Keycloak, и этот маршрут также работает. Я могу получить доступ к серверу Keycloak из своего браузера. Но мне нужен этот безопасный маршрут для работы изнутри (из модуля моего приложения nodejs). Я попытался получить доступ к Keycloak, используя его имя службы (оно работает), но я нарушил рабочий процесс OpenID, и Keycloak отказывается предоставить моему приложению токен, необходимый для аутентификации пользователя. - person mrik974; 29.06.2017
comment
Собственно, это была конфигурация DNS вместе с роутером. Полное доменное имя показало общедоступный IP-адрес маршрутизатора, но по какой-то причине я не обнаружил, что модуль не может получить доступ к этому IP-адресу из кластера. В итоге я настроил поддельный DNS-сервер, который обслуживал внутренний IP-адрес узла, содержащего модуль маршрутизатора. Спасибо (ровно 2 года спустя ...) - person mrik974; 29.06.2019