更新Cognito“用户池”或“联合身份”无效

时间:2016-12-01 16:23:31

标签: amazon-cognito

我创建了一个包含一些应用和属性的cognito用户池。一切都是空的,它还没有用户。

现在,我想在“Atributes”选项卡中添加一些新属性,但所有字段都被禁用。

另一方面,在联合策略中,我试图在“身份验证提供程序”>选项卡下更改“用户池ID”和“客户端ID”。 “Cognito”。一切都很好,我做了我的更改,然后按“保存更改”,但当我刷新页面看到它时,我发现我的更改已丢失。

我的问题是,是Cognito的错误,还是不支持更新属性/配置?

编辑1:好的,无法更新属性。

编辑2:我无法更新标识池上的配置。这是我的步骤:

  1. 转到联盟身份 enter image description here
  2. 按编辑标识池 enter image description here
  3. 在身份验证提供程序中,在cognito选项卡中,取消用户池ID和应用程序客户端ID enter image description here
  4. 更新值,然后按“保存更改” enter image description here
  5. 系统显示已成功保存更改 enter image description here
  6. 转到Cognito下的身份验证提供程序,但仍显示旧值 enter image description here
  7. 检查Pool Id和App Client Id是否正确 enter image description here enter image description here
  8. 由于

4 个答案:

答案 0 :(得分:1)

Cognito不支持更新标准属性。如果需要,您可以添加自定义属性。

更新配置应该在联合身份中工作,我只是尝试重现并且能够更改用户池ID和客户端ID。是否显示任何错误消息?

答案 1 :(得分:1)

第2部分:更改用户池ID和客户端ID有些令人困惑(有些人会说“愚蠢”,因为它是非标准的,没有用处)。以下是它的工作原理,每个字段旁边都有一个“UnLock”按钮,您必须按此按钮才能“解锁”该字段,然后您可以进入该字段并单击“保存”。这在其他一些身份验证提供程序(google / facebook)上的处理方式类似。虽然“解锁”按钮听起来像做一些不受欢迎的事情(谁想要解锁他们自己的身份验证提供程序?),但他们只是解锁文本字段。

第1部分,扩展Rachit的答案:您可以添加自定义属性,但标准属性在创建池时“锁定”(控制台有一个注释表示)。

答案 2 :(得分:1)

我完全按照你所做的去做了。所以也许它是固定的,或者你的浏览器不兼容(我在safari中做过)。

您也可以(或者)使用相同的用户池ID添加其他提供商(也可以)。

最后,谨慎......

有报告称配置已搞砸,删除标识池并重新连接用户池改进的东西。我个人经历过这个。但我从来没有能够重现它,并且存在风险。

风险

(标识池保留了identityID,如果你删除它,你的设备将会有旧的钥匙串,并且不存在identityId,你可能需要擦除钥匙串

显然,如果您有任何同步信息,它将会丢失,如果您有任何与identityId相关的数据,它将会丢失(因为每个人都会获得一个新的身份ID)。

但如果您还在开发中,那么这是最后的手段。

答案 3 :(得分:0)

我遇到了问题中描述的确切问题,但能够使用 AWS CLI 克服它,我可以添加 Cognito 身份验证提供程序,命令如下:

aws cognito-identity update-identity-pool \
--identity-pool-id "<IDENTITY_POOL>" \
--identity-pool-name "<IDENTITY_POOL_NAME>" \
--no-allow-unauthenticated-identities \
--cognito-identity-providers \
ProviderName="cognito-idp.<USER_POOL_ID>",ClientId="<USER_POOL_APP_CLIENT_ID>",ServerSideTokenCheck=false

注意:

这将覆盖现有的 Cognito 身份提供者,如果您不想覆盖而是添加一个新的,则在上述命令中列出其他 Cognito 身份提供者,例如 ProviderName="cognito-idp.<EXISTING_USER_POOL_ID>",ClientId="<EXISTING_USER_POOL_APP_CLIENT_ID>",ServerSideTokenCheck=false 如果命令如下所示:

aws cognito-identity update-identity-pool \
--identity-pool-id "<IDENTITY_POOL>" \
--identity-pool-name "<IDENTITY_POOL_NAME>" \
--no-allow-unauthenticated-identities \
--cognito-identity-providers \
ProviderName="cognito-idp.<USER_POOL_ID>",ClientId="<USER_POOL_APP_CLIENT_ID>",ServerSideTokenCheck=false \
ProviderName="cognito-idp.<EXISTING_USER_POOL_ID>",ClientId="<EXISTING_USER_POOL_APP_CLIENT_ID>",ServerSideTokenCheck=false