keycloak 中的 x-requext-id 标头传播

问题描述 投票:0回答:2

我正在使用 keycloak 在由 API Gatware 大使管理的 kubernetes 集群中实现 OAuth2 代码授权流程,我正在使用 Istio 服务网格将所有可追溯性、mTLS 功能添加到我的集群中。其中之一是 Jaeger,它要求所有服务转发

x-request-id
标头,以便将跨度链接到特定跟踪。

当发送请求时,Istio 附加到大使的代理将生成 x-request-id 并转发请求 keycloak 进行授权,当结果发送回大使时,标头被丢弃,因此 keycloak 的 istio 代理将正在生成一个新的

x-header-id
。下图显示了问题:

这是我丢失 x-request-id 的痕迹的照片:

有没有办法可以强制 Keycloak 转发

x-request-id
标头(如果传递给它)?

更新 这是与 Keycloak 关联的环境变量(ConfigMap):

kind: ConfigMap
apiVersion: v1
metadata:
  name: keycloak-envars
data:
  KEYCLOAK_ADMIN: "admin"
  KC_PROXY: "edge"
  KC_DB: "postgres"
  KC_DB_USERNAME: "test"
  KC_DB_DATABASE: "keycloak"
  PROXY_ADDRESS_FORWARDING: "true"
oauth-2.0 keycloak istio jaeger ambassador
2个回答
1
投票

您可能需要使用环境变量

PROXY_ADDRESS_FORWARDING=true
重新启动keycloak docker容器。

  • 例如:
    docker run -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak

0
投票

keycloak 似乎有默认禁用的 opentelemetry 插件。启用它允许将跟踪 ID 发送到 Jaeger,您可以通过将

KC_OTEL
设置为 True 来启用它。有关更多信息,请参阅doc

© www.soinside.com 2019 - 2024. All rights reserved.