小编Kri*_*jan的帖子

docker容器之间的通信(keycloak和spring)

所以我创建了一个 java spring boot 应用程序,它使用 Keycloak 来验证其用户。当我从 docker-compose 运行 keycloak 时,我可以在将应用程序作为独立 jar 文件运行或调试时成功进行身份验证。但是当我将 Spring Boot 应用程序作为 docker 容器放入 docker-compose 中时。我无法再对用户进行身份验证。

我来自 spring boot docker 容器的错误日志:

springBootApp  | 2019-12-19 13:16:41.498 ERROR 1 --- [nio-8081-exec-2] o.k.a.rotation.JWKPublicKeyLocator       : Error when sending request to retrieve realm keys
springBootApp  | 
springBootApp  | org.keycloak.adapters.HttpClientAdapterException: IO error
Run Code Online (Sandbox Code Playgroud)

我认为问题出在网络上。但所有容器都在同一个虚拟网络中运行。它们也位于同一个 docker-compose 文件中。

这是我的钥匙斗篷部分:

  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
Run Code Online (Sandbox Code Playgroud)

我的春季启动应用程序

  mySpringBootApp:
    image: mySpringBootApp:master-1
    environment:
      - SPRING_PROFILES_ACTIVE=developmentTest …
Run Code Online (Sandbox Code Playgroud)

java spring docker

6
推荐指数
1
解决办法
2616
查看次数

使用docker和java spring时Keycloak认证问题

所以我有一个弹簧启动应用程序。我也使用 swagger 进行测试。我在 docker-compose 中定义了一个 keycloak,如下所示:

  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
Run Code Online (Sandbox Code Playgroud)

当我尝试运行我的 Spring Boot 应用程序时,我将其http://localhost:18080/auth用作keycloak_auth_url. 从我的机器上运行时,一切正常。
通过 docker-compose 运行时,我将 keycloak url 更改为:http://keycloak:18080/auth 但 swaggers 用于将用户重定向到 keycloak 的 url 保持不变http://localhost:18080/auth

通过招摇“有效”进行身份验证。但是当我尝试以经过身份验证的用户身份调用 API 端点时,我的服务器返回以下错误:

Error when sending request to retrieve realm keys
myApp  | 
myApp  | org.keycloak.adapters.HttpClientAdapterException: IO error
Run Code Online (Sandbox Code Playgroud)
Didn't find publicKey for kid: U7a58q_oR3zXWSAwVUIa_7FvhdA7IncCQ2IfKQKDGfI
myApp  | 2020-01-07 11:58:40.615 ERROR 1 --- …
Run Code Online (Sandbox Code Playgroud)

java spring docker spring-boot keycloak

3
推荐指数
1
解决办法
2503
查看次数

标签 统计

docker ×2

java ×2

spring ×2

keycloak ×1

spring-boot ×1