Keycloak 为 Istio 和 JWT 提供无效签名

Keycloak provides invalid signature with Istio and JWT

我正在为 Auth 2.0 使用 Keycloak(最新)来验证身份验证,提供令牌 (JWT) 并使用提供的令牌允许访问应用程序 URL , 基于权限。 Keycloak 目前在 Kubernates 中 运行,以 Istio 作为网关。对于 Keycloak,这是正在使用的策略:

apiVersion: authentication.istio.io/v1alpha1
kind: Policy
metadata:
  name: application-auth-policy
spec:
  targets:
  - name: notification
  origins:
  - jwt:
      issuer: http://<service_name>http.<namespace>.svc.cluster.local:8080/auth/realms/istio
      jwksUri: http://<service_name>http.<namespace>.svc.cluster.local:8080/auth/realms/istio/protocol/openid-connect/certs
  principalBinding: USE_ORIGIN

客户端已在此 Keycloak 中注册,并为其创建了 RSA。 发行方可以正常生成token,策略应用成功。

问题:

  1. 即使设置了所有内容,根据 JWT Validator,Keycloak 提供的令牌的签名无效。

  2. 此令牌不允许使用 401 代码.

    [=32= 对 URL 进行任何访问,本应如此]

还有其他人遇到过类似的问题吗?

问题已通过两个选项解决: 1.用外部服务器ip和外部端口替换服务名称和端口(对于发行者和jwksUri) 2. 禁用 mTLS 及其政策(已知问题:https://github.com/istio/istio/issues/10062)。