Настройка среды тестирования интеграции с KeyCloak в Docker - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь настроить среду тестирования интеграции для одного из наших проектов веб-API, защищенного с помощью KeyCloak. Моя идея состоит в том, чтобы создать файл компоновки Docker, в котором соединяются все необходимые компоненты, а затем попытаться вызвать веб-API, размещенный в папке, и проверить ответ.

Вот пример файла создания Docker, который соединяет KeyCloak и Web API вместе

keycloak:
  image: jboss/keycloak:3.4.3.Final
  environment:
    DB_VENDOR: POSTGRES
    KEYCLOAK_USER: admin
    KEYCLOAK_PASSWORD: admin
    POSTGRES_USER: keycloak
    POSTGRES_PASSWORD: keycloak
    POSTGRES_PORT_5432_TCP_ADDR: postgres
    POSTGRES_DATABASE: keycloak
    JDBC_PARAMS: 'connectTimeout=30'
  ports:
    - '18080:8080'
    - '18443:8443'
  networks:
    - integration-test
  depends_on:
    - postgres

test-web-api:
    image: test-web-api
    environment:
    - IDENTITY_SERVER_URL=https://keycloak:18443/auth/realms/myrealm
    networks:
    - integration-test
    ports:
    - "28080:8080"

Теперь, когда я размещаю KeyCloak и Web API в разных контейнерах, я не могу получить доступ из контейнера Web API к KeyCloak с помощью localhost, поэтому мне нужно использовать https://keycloak:18443/, но когда я пробую его и получаю для пример .well-known / openid-configuration от KeyCloak Я получаю сообщение об отказе в соединении:

root @ 0e77e9623717: / app # curl https://keycloak:18443/auth/realms/myrealm/.well-known/openid-configuration curl: (7) Не удалось подключиться к порту keycloak 18443: соединение отклонено

Из документации я понял, что мне нужно включить SSL на KeyCloak, но весь процесс немного запутан, и не очень понятно, какой домен использовать для сертификата ...

Если бы кто-то имел опыт с ситуацией, подобной моей, и мог бы поделиться ею, это было бы здорово!

1 Ответ

0 голосов
/ 10 сентября 2018

Непонятно, как вы настроили integration-test сеть и где вы проводите интеграционные тесты (хост, контейнер), чтобы получить точный ответ.

Но я стараюсь. Для доступа к ключу с хоста:

https://<host IP or name>:18443/ 

Из контейнера в сети integration-test:

https://keycloak:8443/

Так что попробуйте настроить test-web-api:

IDENTITY_SERVER_URL=https://keycloak:8443/auth/realms/myrealm

и ваш test-web-api должен быть в состоянии связаться с Keycloak.

...