读取/写入 Cognito DeveloperOnlyAttribute

Sim*_*ays 5 amazon-cognito

有人可以提供一些指导如何读取和写入此链接中提到的DeveloperOnlyAttribute吗?

我已经使用 Cloudformation 创建了这个属性,并且在 Cognito 控制台中,自定义属性被创建为custom:dev:custom:paid_user. 如果我对DeveloperOnlyAttribute目的的理解是正确的,我的用例是,一旦用户为应用程序付费,我将拥有一个后端 Lambda 函数来更改此属性。用户自己将无权更改此属性。正确的?

谢谢。

2020/07 更新

AWS文档已经更新了这一行:

我们建议您在用户池客户端中使用 WriteAttributes 来控制如何为新用例更改属性,而不是使用 DeveloperOnlyAttribute。

我的用例场景是用户可以查看某些属性,但不能编辑。示例paid_user属性,付款后,系统将更新此属性;并且用户永远无法自己编辑此属性。

我为我的案例所做的是将这些属性设置为non-writtable属性。用户将无法编辑这些属性,但使用adminUpdateUserAttributes()我仍然可以更新它们

Mik*_*gel 7

AWS 文档中关于此的信息几乎为零,但这是我通过自我测试发现的信息。

可变的 DeveloperOnlyAttributes:

  • 总是有dev:custom他们的前缀,除了在AWS控制台,其中前缀是custom:dev:custom。因此,在您使用 apis 的情况下,您应该将该属性称为dev:custom:paid_user
  • 在调用中不可见getUser(),无论是否使用开发人员凭据调用
  • 打电话时可见adminGetUser()。调用此 api 需要开发人员凭据
  • 打电话时可编辑adminUpdateUserAttributes()。调用此 api 需要开发人员凭据
  • 打电话时可编辑的updateUserAttributes(),无论它被称为与开发商凭证或不

重新阅读最后一篇。您不需要开发人员凭据即可写入 DeveloperOnlyAttribute。用户可以使用他们的用户名/密码登录,然后调用updateUserAttributes()以更改在用户池中的条目上定义的任何 DeveloperOnlyAttributes。至少这就是我的测试所表明的,希望其他人尝试一下并验证/反驳这种行为。

如果 Cognito 有一个公共错误跟踪器,它就会去那里。

使用风险自负。

2020/05 更新

AWS Cognito 此后私下联系我说他们解决了上述安全问题。