【问题标题】:define per user custom scope for cognito为 cognito 定义每个用户的自定义范围
【发布时间】:2019-07-22 20:57:19
【问题描述】:

如何使用 cognito 为每个用户定义自定义范围?

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

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

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

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

有没有办法只使用 cognito 或 cognito + 一些 AWS 托管服务来实现这一点,还是我必须自己实现另一个 API 来管理范围?

【问题讨论】:

  • 嘿@Steve,你找到解决方案了吗?
  • @RenatoGama 没有。它似乎不像它可能的 w/claims 方法。我们最终使用了自定义属性
  • 嘿@Steve!感谢您的回答。也许您可以详细说明作为答案,以便我可以奖励您赏金:)
  • @RenatoGama 完成。如果您有任何问题,请告诉我

标签: amazon-cognito


【解决方案1】:

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

如果您的作用域少于 25 个(认知最大限制),那么每个作用域可以使用一个属性。附言请注意,除非您删除整个池并重新开始,否则您无法重命名/删除该属性。

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

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

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

【讨论】:

  • 这个自定义属性会出现在 ID Token 中,不会出现在 access Token 中,所以你是用 ID Token 进行认证的吗?
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多