【问题标题】:Updating Cognito "User Pools" or "Federated Identities" is not working更新 Cognito “用户池”或“联合身份”不起作用
【发布时间】:2017-04-16 09:09:19
【问题描述】:

我创建了一个包含一些应用程序和属性的 cognito 用户池。全部为空,还没有用户。

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

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

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

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

编辑 2:我无法更新身份池的配置。这是我的步骤:

  1. 转到联合身份
  2. 按编辑身份池
  3. 在身份验证提供程序中,在 cognito 选项卡中,解锁用户池 ID 和应用程序客户端 ID
  4. 更新值并按保存更改
  5. 系统显示更改已成功保存
  6. 转到 Cognito 下的身份验证提供程序,但仍显示旧值
  7. 检查 Pool Id 和 App Client Id 是否正确

谢谢

【问题讨论】:

  • 我正在尝试使用“添加另一个提供程序”按钮并具有相同的行为 - 它表示更改已成功保存但根本没有保存
  • 我会在 AWS 论坛上发布。我认为这是一个错误
  • 2021年我也面临这个问题。

标签: amazon-cognito


【解决方案1】:

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

第 1 部分,扩展 Rachit 的回答:您可以添加自定义属性,但标准属性在创建池时被“锁定”(控制台有说明)。

【讨论】:

    【解决方案2】:

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

    更新配置应该可以在 Federated Identities 中使用,我只是尝试重现并能够更改用户池 ID 和客户端 ID。是否为您显示任何错误消息?

    【讨论】:

      【解决方案3】:

      我所做的正是你所做的,并且奏效了。所以也许它是固定的,或者你的浏览器不兼容(我在 safari 中做到了)。

      您还可以(或者)使用相同的用户池 ID 添加另一个提供程序(这也可以)。

      最后,请谨慎...

      有报告称配置出现问题,删除身份池并重新连接用户池会有所改善。我什至亲身经历过。但我一直无法重现它,而且存在风险。

      风险

      (身份池保留身份ID,如果您将其删除,您的设备将拥有不存在身份ID的旧钥匙串,您可能需要擦除钥匙串

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

      但如果您仍处于开发阶段,这是最后一步很容易。

      【讨论】:

      • 我使用 chrome -> 版本 54.0.2840.99 m(64 位)。我会尝试删除池。我会告诉你我的结果。谢谢:)(对不起我的英语不好)
      • @VladimirVenegas Vlad:你试过了吗?成功了吗?
      【解决方案4】:

      我遇到了问题中描述的确切问题,但能够使用 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.&lt;EXISTING_USER_POOL_ID&gt;",ClientId="&lt;EXISTING_USER_POOL_APP_CLIENT_ID&gt;",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
      

      【讨论】:

        猜你喜欢
        • 2018-02-11
        • 2018-11-07
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 2019-06-17
        • 2018-10-08
        • 2018-08-23
        • 2016-10-17
        相关资源
        最近更新 更多