首页 > 解决方案 > 读/写到 Cognito DeveloperOnlyAttribute

问题描述

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

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

谢谢。

2020/07 更新

aws 文档已更新为以下行:

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

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

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

标签: amazon-cognito

解决方案


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

可变 DeveloperOnly 属性:

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

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

如果 cognito 有一个公共的 bug 跟踪器,它就会去那里。

使用风险自负。

2020/05 年更新

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


推荐阅读