AWS Amplify(AppSync+Cognito)授权,每个组织/租户使用动态组



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

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

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

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

我认为的一个解决方案是为组织和角色的每种组合都建立一个小组。即:OrganizationA__ADMINOrganizationB__USER等因此,我可以在Content模型上使用组身份验证指令限制对模式的访问:

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

内容将有一个值为OrganizationA__ADMINgroup字段

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

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

研究在预令牌生成处理程序中生成额外声明

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

例如

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

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

最新更新