1

我有一个位于 istio-system 命名空间中的 istio Gateway 资源。我需要为多个主机设置 JWT 身份验证,但并非每个主机都使用 JWT。我正在尝试应用Istio 文档中的清单(对于具有标签 app:httpbin 的工作负载的所有请求都需要 JWT)。

这是我的清单:

apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: "test-jwt"
spec:
  selector:
    matchLabels:
      app: "test-users"
  jwtRules:
  - issuer: https://test-keycloak.test.cloud/auth/realms/test
    jwksUri: https://test-keycloak.test.cloud/auth/realms/test/protocol/openid-connect/certs
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: "test-jwt"
spec:
  selector:
    matchLabels:
      app: "test-users"
  rules:
  - from:
    - source:
        requestPrincipals: ["*"]

我有一个带有app: test-users标签的工作负载(pod、服务),但它不起作用。Jwt is missing当我向 test-users 应用程序运行请求时,即使我没有传递令牌,我也不会收到错误消息。issuer我可以在部分输入一个假的jwtRules,请求仍然通过。我尝试了文档中提到的另一种方法,该方法将RequestAuthentication/AuthorizationPolicy对部署在 istio-system 命名空间中并且有效,但是它要求我在所有其他命名空间中使用 JWT 身份验证,这是我无法拥有的。

4

0 回答 0