新用户由管理员创建。他们需要在首次登录时重置其初始密码。我们将Cognito应用程序客户端配置为仅允许自定义身份验证流程(CUSTOM_AUTH_FLOW_ONLY)。但是,当用户重置密码时,身份验证流程结束,并且他们立即获得了id,access和refresh令牌,因此不会发出任何自定义挑战。
新用户当前正在运行此流程:
InitiateAuthRequest
带有用户名和SRP_A,AuthFlow设置为CUSTOM_AUTH
,就像普通登录一样。PASSWORD_VERIFIER
挑战。NEW_PASSWORD_REQUIRED
挑战。我们要么希望流程在此处结束而不发出任何令牌,要么不希望在此处结束并继续进行define auth Challenge触发器调用。
答案 0 :(得分:1)
所以我联系了AWS支持并获得了以下答案:
正如我提到的,我们一直在与团队合作,看来您已经发现使用Custom_Auth的问题以及使用Custom_Auth和Password_Verifier / New_Password_Required挑战的问题。似乎将Custom_auth更改为SRP_A或从SRP_A更改为“ Custom_auth”,并且此时无法使用“需要新密码”挑战。我们设法与Cognito服务团队完全复制了这一点,他们已经确认这有点问题,并且我们不支持使用Custom auth应对这些挑战。他们同意,但是我们应该在基础上给予支持,我们已经将其确定为团队的一项功能请求,并将其放在优先列表中。不幸的是,我不能给出一个明确的时间表来完全实施该程序。
TL; DR: 目前尚不完全支持带有密码验证的自定义身份验证流程。密码重置挑战打破了流程。
对于我们来说,我们使用一种解决方法:在PreTokenGeneration lambda触发器中,我们检查当前的身份验证流是否来自密码重置事件。如果是这种情况,我们只会引发异常,并且不会发出令牌。异常消息将返回给客户端,因此通过检查异常的消息内容,可以看到发生了什么确切的错误。如果您看到由于重置密码而未生成令牌,只需告诉用户:“密码成功重置”,然后将它们再次重定向到登录页面。他们可以从那里正常登录,完成整个自定义身份验证流程。
遗憾的是,当该功能可用时,无法提供反馈。显然,here宣布了大多数新功能,因此我会密切注意这一点。