Keycloak Gatekeeper (переадресация прокси) ничего не делает
У меня есть настройка docker-compose с сервисом 1 (графана), отправляющим запросы на сервис 2 (прометей). Я поставил Keycloak Gatekeeper перед сервисом 2, запрашивая аутентификацию. Это прекрасно работает.
Теперь моя идея заключалась в том, чтобы также поместить второй Keycloak Gatekeeper перед службой 1, внедряя указанную аутентификацию.
К сожалению, это не работает. Наблюдая за моим трафиком через Wireshark, кажется, что мой второй Keycloak Gatekeeper даже не вовлечен ни в какое общение.
Мой файл создания докера для службы 1 и прокси-сервер пересылки выглядит примерно так:
keycloak-forwarder:
image: quay.io/keycloak/keycloak-gatekeeper
command:
- --enable-forwarding=true
- --forwarding-username=<my_username>
- --forwarding-password=<my_password>
- --forwarding-domains=${BASE_DOMAIN}/grafana
- --listen=:3001
- --client-id=<my_keycloak_client_id>
- --client-secret=<my_keycloak_client_secret>
- --discovery-url=${DOMAIN_PROTOCOL}://${KEYCLOAK_DOMAIN}/auth/realms/<my_keycloak_realm>
networks:
- webgateway
grafana:
image: grafana/grafana
networks:
- webgateway
labels:
traefik.enable: true
traefik.backend: grafana
traefik.frontend.rule: Host:${BASE_DOMAIN};PathPrefix:/grafana;PathPrefixStrip:/grafana
traefik.port: 3000
traefik.docker.network: webgateway
1 ответ
Решение
Хорошо, я нашел решение. Есть несколько вещей, которые я сделал не так.
- Флаг переадресации доменов описывает домены, к которым обращается запрос, а не приходит. Поэтому, если графана разговаривает с прометеем, здесь необходимо ввести домен прометея.
- Keycloak Gatekeeper не перехватывает связь автоматически. Таким образом, графана должна использовать это явно как прокси.
Итак, фиксированная docker-compose выглядит следующим образом:
keycloak-forwarder:
image: quay.io/keycloak/keycloak-gatekeeper
command:
- --enable-forwarding=true
- --forwarding-username=<my_username>
- --forwarding-password=<my_password>
- --forwarding-domains=${BASE_DOMAIN}/prometheus
- --listen=:3001
- --client-id=<my_keycloak_client_id>
- --client-secret=<my_keycloak_client_secret>
- --discovery-url=${DOMAIN_PROTOCOL}://${KEYCLOAK_DOMAIN}/auth/realms/<my_keycloak_realm>
networks:
- webgateway
grafana:
image: grafana/grafana
networks:
- webgateway
environment:
- HTTP_PROXY=http://keycloak-forwarder:3001
- HTTPS_PROXY=http://keycloak-forwarder:3001
labels:
traefik.enable: true
traefik.backend: grafana
traefik.frontend.rule: Host:${BASE_DOMAIN};PathPrefix:/grafana;PathPrefixStrip:/grafana
traefik.port: 3000
traefik.docker.network: webgateway