2

我有一个具有多组织结构的 AWS Amplify 应用程序:

组织 A -> 组织 A 的内容 组织 B -> 组织 B 的内容

假设我们有用户 Alice,Alice 属于两个组织,但是,她在每个组织中都有不同的角色,在组织 A Alice 是管理员并且拥有更多权限(即:可以删除内容或修改他人的内容),而在组织B 她是普通用户。

出于这个原因,我不能简单地在 Amplify (Cognito) 上设置常规组,因为一些用户,比如 Alice,可以属于不同组织的不同组。

我认为的一个解决方案是为组织和角色的每种组合设置一个组。ie: OrganizationA__ADMIN,OrganizationB__USER等所以我可以使用模型上的组 auth 指令来限制对架构的访问Content

{allow: group, groupsField: "group", operations: [update]},

内容将有一个group带有值的字段:OrganizationA__ADMIN

然后我可以使用Admin Queries API将用户添加到组 但是,似乎不可能动态地将用户添加到组,每次创建新组织时我都必须手动创建每个组,这几乎扼杀了我的想法。

关于如何实现我想要的结果的任何其他想法?我知道我可以添加对代码的限制,但这不太安全,我宁愿在数据库层有这个限制。

4

1 回答 1

2

考虑在您的预令牌生成处理程序中生成额外的声明

基本上,您可以创建一个包含组织角色映射的属性

例如

{
// ...
  "custom:orgmapping": "OrgA:User,OrgB:Admin"
}

然后在您的预令牌生成处理程序中将它们转换为实际不存在于池中的“伪”组。

于 2021-04-27T18:03:50.603 回答