使用USER_PASSWORD_AUTH的AWS Cognito自定义身份验证流程

斯文·莫林(SvenMöhring)

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

我看到了这个问题,我可以在自定义身份验证流程中使用迁移触发器,但是并不能完全确定它是否回答了我的问题:

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

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

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

斯文·莫林(SvenMöhring)

因此,我设法将密码质询添加到自定义身份验证流程中,方法是将它作为在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有AWS的自定义身份验证流程可放大Cognito

在AWS Cognito中回答NEW_PASSWORD_REQUIRED挑战后继续进行自定义身份验证流程

如何使用lambda作为“开发者身份验证身份”来提供自定义身份验证流程?

AWS Cognito USER_PASSWORD_AUTH“不支持初始化Auth方法。”

AWS Cognito 用户池自定义身份验证 Lambda 未触发

AWS Cognito 将自定义身份验证流与外部身份提供商结合使用

AWS Cognito 联合身份池自定义身份验证提供商发出/注销问题

如何在自定义身份验证 lambda 触发器中使用 AWS Cognito 的自适应身份验证安全启发式?

如何使用带有自定义身份验证的AWS Cognito创建临时的s3上传安全令牌

AWS 自定义授权方 IAM 身份验证

使用Jwt Bearer身份验证的自定义声明

使用自定义SSH身份验证机制(OpenSSH)

使用MVC进行自定义身份验证

如何使用GraphQL自定义身份验证类?

使用 Devise,如何自定义失败的身份验证?

使用自定义身份验证修改请求参数

在 Laravel 6 上使用自定义身份验证

使用Keycloak进行自定义身份验证

使用Azure AD身份验证的自定义授权

使用自定义ID的Firebase身份验证

无法使用自定义身份验证后端登录

使用JavaEE对SOAP进行自定义身份验证

如何在 ADFS 中使用自定义身份验证替换主要身份验证

使用 Windows 集成身份验证对自定义 api 进行身份验证

AWS Cognito API身份验证流程SDK

使用Ember Simple Auth使用自定义身份验证器注销用户

ASP.NET Core使用具有Cookie身份验证的自定义身份验证处理程序

如何在现有的默认身份验证上使用Laravel创建自定义身份验证

如何使用AWS api网关和Web api实施自定义身份验证(逻辑)