首页 > 解决方案 > Keycloak 使用 Istio 和 JWT 提供无效签名

问题描述

我正在为Auth 2.0使用 Keycloak (latest)来验证身份验证,提供令牌 (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 code对 URL 进行任何访问,因为它应该是。

其他人有类似的问题吗?

标签: jwtkeycloakistio

解决方案


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


推荐阅读