AWS Cognito - 管理员无需发送电子邮件即可重置用户密码

2024-04-18

我需要重置一些用户的密码,但是not发送忘记密码的电子邮件。只需重置密码,以便他们下次登录时我可以显示一条消息,要求他们请求重置密码。深入研究我需要的最基本的东西:在不通知用户的情况下,我需要让他们进入一个RESET_REQUIRED状态,以便让用户在前端返回一个PasswordResetRequiredException.

我原本以为AdminSetUserPassword可以做到这一点,但它使用户处于一种需要通过我没有设置的用户界面更改密码的状态。我不确定是否可以采取额外的步骤——设置密码AdminSetUserPassword然后也许采取其他一些步骤?

否则,我已经尝试了很多不同的事情AdminResetUserPassword.

  • 尝试从我在 Lambda 上运行的 Lambda 中删除任何自定义消息CustomMessage_ForgotPassword触发器,但这只会导致发送带有代码的通用消息。
  • 尝试改变email_verified用户的属性false(因为 AWS 文档声明,如果他们有经过验证的电子邮件,它将发送密码重置电子邮件),但这会使密码重置本身引发错误。
  • 尝试将用户的电子邮件更改为临时(假)电子邮件,以便将电子邮件发送到那里,但用户在更改电子邮件时会收到一封电子邮件。

有没有人有这方面的经验,或者这是一个不可能的要求?


我今天正在处理这个问题,我想让你知道我最终做了什么。

有两种方法,而且只有两种方法,可以让用户进入RESET_REQUIRED status:

  1. Use AdminResetUserPassword
  2. 使用导入用户Cognito 导入作业 https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-using-import-tool.html(可以看出这个流程图 https://docs.aws.amazon.com/cognito/latest/developerguide/signing-up-users-in-your-app.html)

正如您所确定的,选项 1 将通过电子邮件或短信发送代码,不,您无法轻易阻止它这样做。我向 AWS Support 提出了一个支持案例来询问这个问题,但他们也没有提出任何建议。最终,我想到了使用自定义发件人触发器 https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-custom-sender-triggers.html这样我就可以在该触发器中决定是否发送电子邮件/短信,但设置外部电子邮件/短信发送器非常麻烦,因此我决定不再打扰它。

在我们的例子中,我们将用户从一个用户池迁移到另一个用户池,因此导入方法最终运行得相当好。如果您只想重置现有用户池中的用户密码,也可以使用导入方法:

  1. 使用以下命令读取用户属性、MFA 选项等AdminGetUser
  2. 将此数据存储在安全的地方
  3. 使用以下命令从 Cognito 池中删除用户AdminDeleteUser
  4. 通过创建并运行 Cognito 导入作业来导入用户

这将成功让您的用户RESET_REQUIRED状态,但缺点是:

  • User's sub会改变
  • 用户记住的设备将消失
  • 用户的登录历史记录将消失
  • 用户的MFA软件设备将消失

所以这是一个相当糟糕的解决方案,但这就是 Cognito 为我们提供的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS Cognito - 管理员无需发送电子邮件即可重置用户密码 的相关文章

随机推荐

  • LabelledGeneric 获取类名

    我对 Shapeless 相当陌生 正如人们从我的问题中推断出来的那样 给定一个实例LabelledGeneric 如何获取它所代表的类的名称 我可以从中获取字段名称信息Keys 所以我想我需要一些其他类型的Witness它封装了类型本身
  • 如何在 Linq GroupBy 中选择前 N 行

    希望你能在这里帮助我 我有一个预订列表 我想在其中获取每组旅游运营商中的前两行 这是数据示例 List
  • JQUERY 对对象数组进行排序

    我有一个包含许多对象的数组 Array var activeMembers 上面数组中的 DIV 对象如下所示 每个对象一次添加一个 div class chatmember 1011 div div class chatmember 10
  • 如何让 gradle 和 cucumber 一起工作?

    让 gradle 干净利落地使用 Cucumber 是一个挑战 我想要得到gradle build编译并运行测试 但到目前为止我还没有成功 构建 gradle plugins id com github samueltbrown cucum
  • 如何处理 Xcode 警告“没有以前的函数原型...”?

    这个警告在一些第三方库中大量出现 有没有办法在不修改代码的情况下处理它 例如忽略警告 如果我必须修改代码来修复它 我该怎么做 这是导致警告的代码块之一 BOOL FBIsDeviceIPad if IPHONE OS VERSION MAX
  • 将 Flex 值动态添加到 extjs 中的控制器

    我在 视图 中给出了一些项目 容器 布局为hbox 现在我想给flex通过 控制器 为每个项目赋予值 我怎样才能做到这一点 我已经浏览了文档 但找不到任何类似的方法setFlex EDIT Ext apply Ext getCmp IdHe
  • R 每行分割字符串[重复]

    这个问题在这里已经有答案了 我有一个data frame like word count a b c 5 c d 3 c d e 10 我想分割每一行的字符串以获得以下结果 word count a 5 b 5 c 5 c 3 d 3 c
  • 给定类型的转换运算符与构造函数。哪个更可取?

    我正在为我的容器定义迭代器类型 当然我想要iterator可转换为const iterator 但我不确定哪个更好 更可取 中的转换运算符iterator class iterator operator const iterator 或非显
  • 尝试升级到 flink 1.3.1 时出现异常

    我尝试将集群中的 flink 版本升级到 1 3 1 以及 1 3 2 但我的任务管理器中出现以下异常 2018 02 28 12 57 27 120 ERROR org apache flink streaming runtime tas
  • Andengine,如何用触摸屏移动精灵

    我从 Andengine 开始 当我触摸屏幕 而不是精灵 时很难移动我的精灵 我真的需要你的帮助 非常感谢 这是我的代码 Override protected Scene onCreateScene final Scene scene ne
  • 用匿名方法定义backgroundworker的RunWorkerCompleted?

    我希望我使用了正确的术语 我的目标是这样的 我意识到它不会那样工作 private bool someBool false BackgroundWorker bg new BackgroundWorker bg DoWork new DoW
  • 结合前同级和后同级的 Xpath

    I am trying to read the values from this screen Sections appears dynamically it can be more than one We have to read eac
  • 装箱(或背包?)问题

    我收集了 43 到 50 个数字 范围从 0 133 到 0 005 但大部分都比较小 如果可能的话 我想找到 L 和 R 之和非常接近的所有组合 The brute force method takes 243 to 250 steps
  • UrlHelper.Action("Edit", "Ad") 返回 id 参数?

    Hi 我使用以下代码生成 URL UrlHelper urlHelper new UrlHelper htmlHelper ViewContext RequestContext urlHelper Action Edit Ad 如果我当前在
  • 如何重置爬虫URL缓存?

    我正在运行一个通过expressjs 调用调用的爬虫 当我再次调用相同的路线时 我的爬虫再次运行 但显示所有路线已经完成 我什至删除了 storage 文件夹 我阅读了文档 但似乎无法让 purgeDefaultStorages 工作 我将
  • Oracle数据库中如何去掉NUL字符?

    数据库 我有一个 Oracle11g 数据库 其中有一个包含大约 1000 万行和大约 40 列的表 这些数据源自打孔卡时代 并已从一个 Oracle 版本转换到下一个版本多次 这是一个实时生产数据库 并且在某种程度上持续使用 但它并不是那
  • 与 NaN 进行元素比较作为相等

    如果我运行以下代码 dft1 pd DataFrame a 1 np nan np nan dft2 pd DataFrame a 1 1 np nan dft1 a dft2 a 结果是 0 True 1 False 2 False Na
  • Android 上的位置感知地理编码(就像 Google 地图)

    似乎在搜索谷歌地图 app is 位置感知 例如 如果我在悉尼搜索 Pitt St 它会立即找到正确的街道 单击 您的意思是 会显示其他 Pitt St 的列表附近郊区 有没有办法在我们的应用程序中获得类似的体验 我尝试了标准Geocode
  • 将 float 发送到不兼容类型 id 的参数

    我正在创建一个按钮 该按钮使用核心数据来保存点注释的名称 x 坐标和 y 坐标 我可以成功保留该名称 但当我尝试保存坐标时 我不断收到此错误 我已经记录了正确的数据 但我似乎无法保存它 当我尝试为 newPOI 设置值时 收到一条错误消息
  • AWS Cognito - 管理员无需发送电子邮件即可重置用户密码

    我需要重置一些用户的密码 但是not发送忘记密码的电子邮件 只需重置密码 以便他们下次登录时我可以显示一条消息 要求他们请求重置密码 深入研究我需要的最基本的东西 在不通知用户的情况下 我需要让他们进入一个RESET REQUIRED状态