我同时使用了AdminResetPassword和ForgotPassword,并且在API文档中发现了一个矛盾之处,该矛盾之处令人困惑,并且似乎表明当前没有完整的管理员初始化的重置密码流程的解决方案。
AdminResetPassword documentation说:
开发人员调用此API时,当前密码无效,因此必须进行更改。如果用户在调用API后尝试登录,则该应用将返回PasswordResetRequiredException异常,并应引导用户进入流程以重置密码,与忘记密码的流程相同
但是,ForgotPassword documentation指出ConfirmForgotPassword是忘记密码流的一部分,而ConfirmForgotPassword documentation要求将旧密码作为请求的一部分进行传递。密码字段描述为:
用户请求找回忘记密码的密码。
因此,文档声称AdminResetPassword和ForgotPassword使用相同的流程来重置密码,但是,实际上,ForgotPassword允许恢复密码,而AdminResetPassword使当前密码无效。此后的流量似乎不可能相同。
这是文档中的错误吗?还是我误解了AWS Cognito中重置密码的工作原理?
如果上述两个流程不同,那么在使用AdminResetPassword使密码无效后,用于重置密码的完整流程是什么?
答案 0 :(得分:4)
好的,我不喜欢这样做,但是我找到了答案。
该文档确实有一些误导点,如下所述,但不一定明显不正确。
1。)调用了ForgotPassword和AdminResetPassword后,用户密码无效。对于AdminResetPassword,用户通过电子邮件/短信获取“验证码”,实际上是带有ConfirmForgotPassword API方法的“确认码”字段。这是一种误导。
2。)在ConfirmForgotPassword API调用中,文档将“密码”字段描述为:
用户请求找回忘记密码的密码
但是,该字段实际上是用户要设置的新密码。
3。)文档未能注意到没有秘密集的客户端不需要“秘密哈希”字段。
因此,ConfirmForgotPassword确实可以作为AdminResetPassword或ForgotPassword的后续调用,同时牢记以上几点。