我有一个位于 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 身份验证,这是我无法拥有的。