【问题标题】:Istio Authorization with JWT使用 JWT 进行 Istio 授权
【发布时间】:2019-03-19 10:43:15
【问题描述】:

我正在运行 isio 1.0.2,无法根据针对 Azure AD 的 JWT 声明配置服务授权。

我已成功配置并验证了 Azure AD oidc jwt 最终用户身份验证,并且工作正常。

现在我想使用 request.auth.claims["preferred_username"] 属性配置 RBAC 授权。 我创建了一个如下所示的 ServiceRoleBinding:

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
  name: service-reader
  namespace: default
spec:
  rules:
  - services: ["myservice.default.svc.cluster.local"]
    methods: ["GET"]
    paths: ["*/products"]
---
apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: service-reader-binding
  namespace: default
spec:
  subjects:
  - properties:
      source.principal: "*"
      request.auth.claims["preferred_username"]: "user@company.com"
  roleRef:
    kind: ServiceRole
    name: "service-reader"

但是,我不断从服务代理收到 403 Forbidden,即使来自 Authentication 标头的 preferred_username 声明是正确的。 如果我注释掉request.auth.claims["preferred_username"]: "user@company.com" 行,则请求成功。

谁能指出关于基于 oidc 和 jwt 配置授权的正确方向?

【问题讨论】:

    标签: authorization jwt rbac istio


    【解决方案1】:

    没关系。我发现了问题。 我缺少用户:“*”检查以允许所有用户。 所以在主题下应该说:

    subjects:
      - user: "*"
        properties:
          source.principal: "*"
          request.auth.claims["preferred_username"]: "user@company.com"
    

    这样就解决了。

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2020-06-12
      • 2021-08-17
      • 2020-12-17
      • 2019-06-04
      • 2020-02-13
      • 2019-06-13
      • 2016-07-20
      • 2019-09-17
      相关资源
      最近更新 更多