Spring-boot 运行 istio sidecar 代理下抛出 HTTP 403 错误

Spring-boot running under istio sidecar proxy throw HTTP 403 Error

同一个命名空间下部署了ServiceA和ServiceB服务。启用了 istio 以验证请求身份验证。对服务的任何调用都需要 'Authrization' header 和有效的 jwt 令牌。它通过设置 RequestAuthenication along with AuthorizationPolicy 得到验证。它按预期工作,我可以使用有效的身份验证令牌进行 http 调用。现在 ServiceA 需要与 ServiceB 对话。我用的是service-nameserviceb..<namespace-name>.svc.cluster.local。调用传递给 ServiceB 但失败并显示 HTTP 403。它需要身份验证令牌 header。 如何在没有身份验证令牌的情况下允许同一命名空间内的服务之间进行调用? 我正在尝试找到一个自定义 AuthorizationPolicy 的示例,以便它允许在没有身份验证令牌的情况下使用与受信任服务相同的命名空间进行调用。请让我知道是否可行或是否有其他方法。

我所有的pods运行下的服务都是spring-boot并且使用RestTemplate进行服务间的调用

下面是使用的istio auth策略

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: service-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]

我更改了原来的授权策略

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: service-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]

包括如下命名空间

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: catalog-auth-policy
  namespace: namespace-dev
spec:
  rules:
  - from:
      - source:
          requestPrincipals: ["*"]
      - source:
          namespaces: ["namespace-dev"]

它按预期工作。