【问题标题】:How do I make plugin.identity.keycloak from Camunda work in Docker (Desktop)?如何使 Camunda 的 plugin.identity.keycloak 在 Docker(桌面)中工作?
【发布时间】:2022-06-15 18:14:29
【问题描述】:

大约一个月前,我实现了 camunda-bpm-identity-keycloak as described here 以使我的 spring-camunda 项目与 keycloak 一起工作。本周我尝试对 keycloak 和 spring-camunda 进行 dockerizing。虽然前者的实施没有太多障碍,但后者我已经坚持了好几天了。

主要问题是关于 api 调用似乎没有到达 keycloak,无论 keycloak 是否被 dockerized。我可以为 SSO 部分解决这个问题。但是,这个问题仍然存在于“plugin.identity.keycloak”部分。

这是docker中的错误代码。

2022-03-10 13:39:45.704 ERROR 1 --- [           main] org.camunda.bpm.extension.keycloak       : KEYCLOAK-01011 TOKEN request failed: I/O error on POST request for "https://localhost:8443/auth/realms/MyRealm/protocol/openid-connect/token"

以下是它在 .yaml 文件中的属性:

plugin.identity.keycloak:
  keycloakIssuerUrl: https://localhost:8443/auth/realms/MyRealm
  keycloakAdminUrl: https://localhost:8443/auth/admin/realms/MyRealm
  clientId: myrealm-client
  clientSecret: insertsecret
  useUsernameAsCamundaUserId: true
  useGroupPathAsCamundaGroupId: true
  administratorGroupName: camunda-admin
  disable-s-s-l-certificate-validation: true

这里是 Dockerfile:

FROM adoptopenjdk/openjdk11:alpine-jre
EXPOSE 8080
ARG JAR_FILE=target/testdockerforspringcamunda-1.0.0-SNAPSHOT.jar
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

编辑:

我没有 docker compose 可以分享。我刚刚使用了那个 Dockerfile。奇怪的是,它在令牌的 POST 请求期间而不是在配置的 Get 请求期间出错。当我在 keycloak 离线时启动 dockerized 项目时,会发生后者。

这里是非 dockerized keycloak 独立服务器配置的 keycloak 端口:

<socket-binding name="http" port="${jboss.http.port:8180}"/>
<socket-binding name="https" port="${jboss.https.port:8443}"/>

编辑2:

使用容器名而不是本地主机后,我得到一个稍微不同的错误:

2022-03-14 10:28:13.651 ERROR 1 --- [           main] org.camunda.bpm.extension.keycloak       : KEYCLOAK-01011 TOKEN request failed: I/O error on POST request for "https://keycloak3:8181/auth/realms/MyRealm/protocol/openid-connect/token": keycloak: System error; nested exception is java.net.UnknownHostException: keycloak: System error

编辑3:

我以某种方式解决了这个新错误。我假设重新启动 keycloak 容器可以做到这一点。

【问题讨论】:

  • 尝试从 docker ping 到 keycloak 服务器。
  • @AbrarAnsari 有关如何执行此操作的任何链接?我只是 Docker 的初学者。
  • 你有 docker compose 或 helm 要分享吗?网络配置怎么样?是暴露正确端口的 keycloak 容器,例如localhost:8443?
  • @AbrarAnsari 谢谢。我对其进行了测试,我的容器在 ping keycloak 服务器时没有问题。我的编辑描述了具体问题。

标签: spring docker keycloak camunda camunda-plugin


【解决方案1】:

当您在容器中工作时,localhost 会解析为本地容器​​。 在您的情况下,使用来自 camunda 容器的 localhost 调用 keycloak 不会到达任何地方。 服务名称的问题是,它在容器到容器的通信中运行良好。但是当涉及到浏览器重定向时,它就不起作用了。 使用你的系统ip地址就可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2021-02-24
    • 1970-01-01
    • 2020-10-05
    • 2022-01-23
    • 2020-06-10
    • 1970-01-01
    相关资源
    最近更新 更多