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