我创建了一个包含一些应用和属性的cognito用户池。一切都是空的,它还没有用户。
现在,我想在“Atributes”选项卡中添加一些新属性,但所有字段都被禁用。
另一方面,在联合策略中,我试图在“身份验证提供程序”>选项卡下更改“用户池ID”和“客户端ID”。 “Cognito”。一切都很好,我做了我的更改,然后按“保存更改”,但当我刷新页面看到它时,我发现我的更改已丢失。
我的问题是,是Cognito的错误,还是不支持更新属性/配置?
答案 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