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

Ste*_*eve 4 amazon-cognito

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

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

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

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

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

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

Ste*_*eve 5

我们找不到一种方法来使作用域在每个用户的基础上工作,因此最终使用了自定义属性。

如果您的范围少于25个(认知最大限制),则每个范围可以使用一个属性。PS只是要注意,一旦更改了属性,就无法重命名/删除该属性,除非您删除整个池并重新开始。

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

custom:resource1.read : "true"
custom:resource1.write : "false"
custom:resource2.read : "true"
custom:resource2.write : "true"
Run Code Online (Sandbox Code Playgroud)

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

  • 这个自定义属性将出现在ID Token中,而不是访问令牌中,那么您是否使用ID Token进行身份验证? (6认同)