amazon-cognito - 如何禁用通过身份提供商创建的 AWS Cognito 用户池帐户?
问题描述
那里有任何 Cognito 用户池专家吗?我已经使用 Cognito 有一段时间了,但是这个让我有点难过。
我们允许用户使用 Facebook 等社交账户注册和登录,这些账户在用户池中设置为身份提供者。
用户需要先完成自定义注册表单才能使用主应用程序 - 我们不使用托管 UI 进行登录或注册
自定义注册过程的一个步骤允许用户指示随后要使用的社交提供者
这使我们能够从社交服务提供商那里撤回用户的电子邮件、名字和姓氏,这很棒 - 我们目前使用 cognito 客户端和回调来执行此操作
但是这样做,这会在注册过程完成之前在 Userpool 中提供一个用户 - 事实上这是有道理的 - 为了让 Cognito 向我们提供它需要调用到社交提供者 /userinfo 端点以填充用户数据
所以,我们现在遇到的问题是,当用户完成注册过程的一半时,我有一个确认的用户帐户 - 例如。在用户完成注册过程之前
这是一个问题,因为用户可以使用他们的社交登录名登录应用程序,而无需完成注册过程
所以在我看来,我有两个选择:
- PostConfirmation Lambda 触发器,它使用 cognito-idp SDK 在用户确认后立即禁用用户
- 不要使用 Cognito 来获取用户信息,例如名字、姓氏、电子邮件、图片等 - 但是这需要我们为每个当前和未来的社交提供商编写一个解决方案,这不是我热衷的事情
我错过了一些明显的东西吗?
提前致谢!
解决方案
我会说 PostConfirmation Lambda 触发器是一个很好的方法 - 但是改为使用adminDisableProviderForUser来禁止用户使用指定的外部(SAML 或社交)身份提供商登录
您可以稍后调用adminLinkProviderForUser将用户池中的现有用户帐户链接到外部身份提供者。
另一种解决方案是防止用户在尚未完全完成注册过程的情况下通过预身份验证 Lambda 触发器检查与您已完成的注册过程相关的唯一标识符来登录
推荐阅读
- javascript - 尝试将本地图像获取到 html 时出错(将 esModule 添加为 false)
- python - 使用 REST API 与 MiR200 机器人通信
- python - 可以从其权重和输出中获得经过训练的 U-Net(卷积神经网络)的输入吗?
- angular - 在这种特殊情况下使用 async-pipe 而不是 subscribe() 真的更好吗?
- python - 与 Azure Blob 一起使用的正确 python 路径拆分方法是什么
- lua - 你能检查一下我对 lua 堆栈的理解是否正确吗?
- leaflet - Leaflet MarkerCluster LayerSupport:在移动浏览器上平移期间不会出现标记
- python - 如何使用 django-countries 获得国籍
- html - HTML,CSS,JS等python等语言的官方网站和文档在哪里
- mongodb - 聚合嵌套数组元素