我目前正在使用定义,创建和验证触发器来进行自定义身份验证流程。但是,在流程期间不会检查用户密码。我们在客户端上使用USER_PASSWORD_AUTH选项,因此没有SRP。
我看到了这个问题,我可以在自定义身份验证流程中使用迁移触发器,但是并不能完全确定它是否回答了我的问题:
是否可以将自定义身份验证流与用户名密码(非SRP)流结合使用?如果是这样,我必须返回的挑战名称是什么?
这里说可以使用组合,但是在我看来PASSWORD_VERIFIER仅适用于SRP身份验证:
自定义身份验证流还可以结合使用内置质询(例如SRP密码验证和通过SMS的MFA)以及自定义质询(例如CAPTCHA或机密问题)。
因此,我设法将密码质询添加到自定义身份验证流程中,方法是将它作为在DefineAuthChallenge lambda触发器中的第一个质询返回,如下所示:
// Add the password verifier to verify the password first.
if (input.Request?.Session == null || !input.Request.Session.Any(s => s.ChallengeName == "PASSWORD_VERIFIER"))
{
input.Response.ChallengeName = AuthChallengeNames.AWS_PasswordVerifier;
input.Response.FailAuthentication = false;
input.Response.IssueTokens = false;
return input;
}
没有挑战的会议给出的,因为这应该是第一个挑战将通过自定义的验证流程返回,如描述在这里(节“自定义认证流程”):
如果要在自定义身份验证流程中包括SRP,则需要从它开始。
但是,此刻,如果用户被迫更改密码,则此后将跳过自定义身份验证流,这是当前的错误,已被AWS确认。在这里查看相关文章。
此处的示例(“定义身份验证挑战示例”部分)被证明是错误的,因为在第一次单击定义身份验证挑战触发器时,会话中没有任何挑战。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句