JWT Keycloak не является валидныйм при получении его с запущеного докер контейнера

Проблема такова, что у меня сервисы работающие на localhost обращались на keycloak работающий в докере, и при генерации токена доступа, такой параметр как issuer-uri был прописан как localhost,в aplication.yml, и при получении токена и при расшифровке его через jwt.io там атрибут "iss": был "http://localhost:8080/auth/realms/task-realm", ну тобиж тоже на localhost. После того как я закинул контейнер с сервисом в докер, с вот такими настройками:

      resource-server:
        jwt:
          issuer-uri: http://keycloak:8080/auth/realms/task-realm
          jwk-set-uri: http://keycloak:8080/auth/realms/task-realm/protocol/openid-connect/certs

У меня начала лететь 401 ошибка, при попытке попасть на засекьюреный энд поинт, в логах было следующее

 Securing GET /api/v1/company
2024-09-21T20:44:18.915158897Z 2024-09-21T20:44:18.914Z DEBUG 1 --- [companies-service] [nio-8084-exec-7] o.s.s.oauth2.jwt.JwtClaimValidator       : The iss claim is not valid
2024-09-21T20:44:18.915212584Z 2024-09-21T20:44:18.915Z DEBUG 1 --- [companies-service] [nio-8084-exec-7] o.s.s.o.s.r.a.JwtAuthenticationProvider  : Failed to authenticate since the JWT was invalid

Ну тоесть по логам видно что проблема как раз в этом поле. Я решил опять расшифровать этот токен, и там в поле iss был все тот же "http://localhost:8080/auth/realms/task-realm" как я понял он при переносе сервсиа в докер по прежнему остался прежним, но теперь как бы его нужно получать не по localhost, а по имени контейнера keycloak, так вот вопрос может кто знает как это решить?


Ответы (1 шт):

Автор решения: Назар

Вообщем я решил это таким образом : я зашел в настройки realm в keycloak admin(Realm setting) на вкладке General, нужно найти поле Frontend URL, и вписал туда "http://keycloak:8080/auth"

→ Ссылка