AWS Amplify联合授权规则



我在AWS Amplify中有一个多租户应用程序,我使用这里描述的基于自定义属性的多租户

所有型号都有一个复合键;公司";并且cognito用户池具有将用户链接到租户数据的自定义属性custom:company

以下示例类型:

type Customer @model
@key(fields: ["company", "id"])
@auth(rules: [
{ allow: owner, ownerField: "company", identityClaim: "custom:company"},
{ allow: groups, groups: ["Member"], operations: [read] },
{ allow: groups, groups: ["Admin"]},
])
{
company: ID!
id: ID!
...
}

我想将用户组添加到cognito中,以管理不同用户可以执行的操作——例如,Admin用户可以执行所有操作,但Member用户只能执行read

问题是,第一个owner身份验证规则将与具有匹配custom:company属性的任何人相匹配,而不考虑其组。

有没有一种方法可以组合所有者和组@auth规则,即owner and groups都需要通过才能访问项目?

例如,允许Member组的用户,但仅当他们的custom:company属性与型号的company匹配时才允许

另一个例子-任何具有匹配custom:company属性的人都可以访问项目,但Members只能读取

不幸的是,目前AWS Amplify指令无法实现这一点。

您不能将基于租户的身份验证与基于角色的身份验证相结合,以获得完全的多角色多租户应用程序。

https://github.com/aws-amplify/amplify-category-api/issues/449

您可以选择lambda授权器,然后在那里自己处理所有的授权逻辑。但这将是乏味的。

最新更新