我正在运行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"
但是,即使Authentication标头中的preferred_username声明是正确的,我仍然从服务代理获得403 Forbidden。
如果我将request.auth.claims["preferred_username"]: "user@company.com"
行注释掉,则请求成功。
有人能为我指出有关基于oidc和jwt配置授权的正确方向吗?
答案 0 :(得分:1)
没关系。我发现了问题。 我缺少用户:“ *”选中以允许所有用户。 所以在主题下应该说:
subjects:
- user: "*"
properties:
source.principal: "*"
request.auth.claims["preferred_username"]: "user@company.com"
可以解决此问题。