【发布时间】:2021-12-29 03:25:45
【问题描述】:
我正在尝试使用 Cognito 用户池来处理用户身份验证。我已经开始集成 OIDC 提供程序以进行登录。多亏了一些 SO posts 和 this post 的帮助,它大部分都在工作。
我已经到了可以将外部用户链接到我的内部用户的地步,但是当我尝试登录时,我收到“无效的提供者名称用户名组合”错误。我注意到这是因为外部用户的用户 id 中有大写字母,但 Cognito 中链接的 user_id 只是小写。
示例:
外部用户的 Okta id:abc123DEF
内部用户 id:<uuid>(无所谓)
Cognito 外部用户 ID:okta_abc123def
内部用户身份列表:[{"userId":"abc123def","providerName":"Okta","providerType":"OIDC","issuer":null,"primary":false,"dateCreated":1640383493683}]
以前有没有人遇到过这个问题并想出了解决方案?如果我在用户注册之前知道用户的外部 ID,我可以解决这个问题,因为 Cognito 需要在添加外部用户之前调用链接命令,但这需要他们知道他们的内部 ID 并提供它,这是太多的开销。
编辑:
当使用区分大小写的用户 ID 手动调用链接用户命令,然后尝试使用外部提供程序登录时,我按预期返回了一个代码,但在 Cognito 中没有创建外部用户(应该有)和该代码无法取回令牌。
更新:
问题是我没有调用 cognito 域的 LOGOUT 端点,因此它使用了错误链接的身份验证用户,而不是尝试通过 Cognito 重新身份验证。使用自定义属性(维护大小写)的建议,我能够使用预注册 lambda 来链接用户,它现在对我有用。仍然存在用户已经存在错误的问题,但我可以像this post 建议的那样在我的客户端中处理它。
【问题讨论】:
标签: amazon-web-services amazon-cognito openid-connect