无法区分JWT令牌过期错误和Istio RBAC访问被拒绝错误

时间:2019-05-07 02:14:22

标签: istio

我已经安装了istio v1.1.1,使用Istio身份验证策略时遇到了麻烦。即,我的大多数微服务都需要同时支持最终用户身份验证(JWT令牌)和服务服务身份验证(通过istio mTLS)。
我设计了同时启用mTLS和JWT身份验证的Istio身份验证策略。我必须将 originIsOptional 设置为 true ,因为服务呼叫仅将K8S ServiceAccount作为服务身份。

现在,问题是:如果JWT令牌过期或丢失,则istio将返回403-RBAC访问被拒绝,因为将绕过JWT身份验证并且RBAC将会生效。
如果我将 originIsOptional 设置为 false 。 JWT到期/丢失将按预期返回401-JWT令牌失败,但由于必须使用JWT令牌,因此服务/服务调用将被阻止。

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: "default"
  namespace: "ns-fota"
spec:
  peers:
 1. mtls: {}
  origins:
 2. jwt:
      issuer: "https://47.100.178.136:9444/oauth2/token"
      jwksUri: "http://47.100.178.136:9764/oauth2/jwks"
  principalBinding: USE_ORIGIN
  originIsOptional: true
EOF

我的问题:

  1. 为什么服务-服务调用(没有JWT令牌,只有K8S ServiceAccount / Istio mTLS)在附加的配置中传递? principalBinding 已配置 USE_ORIGIN 。这是否意味着只有JWT用户主体有效?

  2. 如何同时支持jwt / mTLS身份验证,同时系统可以区分jwt令牌丢失和Istio RBAC失败?

0 个答案:

没有答案