为用户定义每个用户的自定义范围

时间:2019-07-22 20:57:19

标签: amazon-cognito

如何使用cognito在每个用户的基础上定义自定义范围?

例如,我有范围resource1.read,resource1.write

我希望用户A具有resource1.read和resource1.write,而用户B具有resource1.read only。

这只是一个高级示例。我们拥有大量不同的资源,并希望允许客户管理每个用户可以访问的资源。

我还没有找到一种将范围与每个单个用户相关联的方法,但是只能在每个池级别上进行。

是否有办法仅使用cognito或cognito +一些AWS托管服务来实现此目的,还是必须实现另一个API自己来管理范围?

1 个答案:

答案 0 :(得分:5)

我们找不到让每个用户使用范围的方法,因此最终使用了自定义属性。

如果范围少于25个(认知最大限制),则每个范围可以使用一个属性。附言请注意,除非您删除了整个池并重新开始,否则一旦设置好属性就无法重命名/删除该属性。

例如,您的属性可能如下所示:

custom:resource1.read : "true"
custom:resource1.write : "false"
custom:resource2.read : "true"
custom:resource2.write : "true"

这个想法很简单。我们没有在scopes数组中定义所有范围,而是在常规自定义属性中对其进行定义。当代码检查范围时,只需遍历所有字段并找到带有正确前缀的字段即可。