带有 USER_PASSWORD_AUTH 的 AWS Cognito 自定义身份验证流程

Sve*_*ing 4 amazon-web-services amazon-cognito

我目前正在使用定义、创建和验证触发器处理自定义身份验证流程。但是,在流程中不会检查用户密码。我们在客户端上使用 USER_PASSWORD_AUTH 选项,因此没有 SRP。

我看到了这个问题Can I use the migration trigger in a Custom auth flow并且不太确定它是否回答了我的问题:

是否可以将自定义身份验证流程与用户名-密码(非 SRP)流程结合使用?如果是这样,我必须返回的挑战名称是什么?

这里声明可以使用组合,但在我看来 PASSWORD_VERIFIER 仅适用于 SRP 身份验证:

自定义身份验证流程还可以使用内置质询(例如 SRP 密码验证和通过 SMS 的 MFA)和自定义质询(例如 CAPTCHA 或秘密问题)的组合。

Sve*_*ing 6

因此,我设法将密码质询添加到自定义身份验证流程中,将其作为 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;
}
Run Code Online (Sandbox Code Playgroud)

没有挑战的会议给出的,因为这应该是第一个挑战将通过自定义的验证流程返回,如描述在这里(节“自定义认证流程”):

如果要在自定义身份验证流中包含 SRP,则需要从它开始。

但是,目前,如果用户被迫更改密码,则随后会跳过自定义身份验证流程,这是目前的一个错误,AWS 已确认。在此处查看相关帖子

此处的示例(“定义身份验证挑战示例”部分)被证明是完全错误的,因为第一次触发定义身份验证挑战时,会话中没有任何挑战。


归档时间:

查看次数:

2510 次

最近记录:

7 年,3 月 前