Проблемы с аутентификацией Keycloak при использовании docker и java spring - PullRequest
2 голосов
/ 07 января 2020

Итак, у меня есть приложение весенней загрузки. Я также использую сваггер для тестирования. Внутри docker определен ключевой плащ, составленный так:

  keycloak:
    image: jboss/keycloak
    ports:
      - "18080:8080"
    volumes:
        - ../keycloak:/opt/jboss/keycloak/imports
    command: 
        - "-b 0.0.0.0 -Dkeycloak.import=/opt/jboss/keycloak/imports/realm-export.json"
    environment:
        - KEYCLOAK_USER=admin
        - KEYCLOAK_PASSWORD=admin

, когда я пытаюсь запустить приложение с весенней загрузкой, я использую http://localhost:18080/auth как keycloak_auth_url. При запуске с моей машины все работает.
При запуске через docker -compose я меняю URL-адрес keycloak на: http://keycloak:18080/auth, но URL-адрес, который использует swaggers для перенаправления пользователя на keycloak, остается прежним http://localhost:18080/auth

Аутентификация через чванство "работает". Но когда я пытаюсь вызвать конечную точку API как аутентифицированного пользователя, мой сервер возвращает следующую ошибку:

Error when sending request to retrieve realm keys
myApp  | 
myApp  | org.keycloak.adapters.HttpClientAdapterException: IO error
Didn't find publicKey for kid: U7a58q_oR3zXWSAwVUIa_7FvhdA7IncCQ2IfKQKDGfI
myApp  | 2020-01-07 11:58:40.615 ERROR 1 --- [nio-8082-exec-1] o.k.a.BearerTokenRequestAuthenticator    : Failed to verify token

Теперь я не уверен, что проблема заключается в том, что мое приложение не может подключиться к Keycloak для проверки токена. или проверка токена не удалась?
спасибо за помощь

1 Ответ

4 голосов
/ 07 января 2020

Вам придется изменить keycloak_auth_url на http://keycloak:8080/auth (если вы используете spring-boot, вы можете сделать это, используя переменную окружения вместо жесткого кодирования), если вы хотите подключиться к нему из другого установленного контейнера по сочинению.

Порт 8080 - это порт, на котором работает keycloack в контейнере keycloak, а порт 18080 - это порт, который публикуется в host.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...