管理错误响应 - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管理错误响应

Amazon Cognito 支持自定义用户池返回的错误响应。自定义错误响应可用于与身份验证、确认和密码恢复相关的操作。使用PreventUserExistenceErrors设置以启用或禁用与用户存在相关的错误。

启用自定义错误响应后,Amazon Cognito 身份验证 API 将返回一个通用的身份验证失败响应。错误响应告知您用户名或密码不正确。Amazon Cognito 账户确认和密码恢复 API 返回一个响应,指示代码已发送到模拟的传递媒介。错误响应在状态为ENABLED并且用户不存在。以下是 Amazon Cognito 操作的详细行为,当PreventUserExistenceErrors设置为ENABLED

用户身份验证操作

您可以将任一身份验证流方法与以下操作一起使用。

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

基于用户名密码的身份验证

在身份验证流程中ADMIN_USER_PASSWORD_AUTHUSER_PASSWORD_AUTH用户名和密码返回时,只需调用InitiateAuth。Amazon Cognito 返回一个通用NotAuthorizedExceptionError,指示用户名或密码不正确。

基于安全远程密码 (SRP) 的身份验证

在 USER_SRP_AUTH 身份验证流程中,Amazon Cognito 在第一步中收到用户名以及 SRP 参数 “A”。作为响应,Amazon Cognito 根据 SRP 协议为用户返回 SRP 参数 “B” 和 “salt”。如果找不到用户,Amazon Cognito 会在第一步中返回一个模拟响应,如RFC 5054。Amazon Cognito 返回相同的 '盐' 和内部用户 ID通用唯一标识符 (UUID)格式相同的用户名和用户池组合。当下一个操作RespondToAuthChallenge运行密码证明时,Amazon Cognito 会返回一个通用NotAuthorizedExceptionError,指示用户名或密码不正确。

注意

您可以使用UsernamePassword来模拟通用响应,如果您使用的是基于验证的别名,并且不可变用户名的格式不是 UUID。

ForgotPassword

当找不到用户、用户被禁用或用户没有恢复其密码的机制时,Amazon Cognito 会返回CodeDeliveryDetails为用户提供模拟交付介质。模拟的传递媒介由用户池的输入用户名格式和验证设置决定。

ConfirmForgotPassword

Amazon Cognito 返回CodeMismatchException错误的用户不存在或已禁用的用户。如果在使用ForgotPassword时,Amazon Cognito 将返回ExpiredCodeExceptionError。

ResendConfirmationCode

Amazon Cognito 退货CodeDeliveryDetails对于已禁用的用户或不存在的用户。Amazon Cognito 会向现有用户的电子邮件或电话号码发送确认码。

ConfirmSignUp

ExpiredCodeException如果代码已过期,则返回。Amazon Cognito 退货NotAuthorizedException当用户未被授权时。如果代码与服务器期望的代码不匹配 Amazon Cognito 返回CodeMismatchException

SignUp

这些区域有:SignUp操作返回UsernameExistsException当已使用用户名时。为防止在 SignUp 期间对于电子邮件或电话号码发生 UsernameExistsException 错误,您可以使用基于验证的别名。有关更多信息,请参阅 。AliasAttributesAmazon Cognito API 参考指南。有关别名的更多信息,请参阅别名概述

导入的用户

如果PreventUserExistenceErrors,则在对导入用户进行身份验证期间,通用NotAuthorizedException返回错误,指示用户名或密码不正确,而不是返回PasswordResetRequiredException。请参阅要求导入的用户重置密码了解更多信息。

迁移用户 Lambda 触发器

Amazon Cognito 为 Lambda 触发器在原始事件上下文中设置了空响应时不存在的用户返回模拟响应。有关更多信息,请参阅 。迁移用户 Lambda 触发器

自定义身份验证质询 Lambda 触发器

如果您使用自定义身份验证质询 Lambda 触发器并启用错误响应,然后LambdaChallenge返回一个名为UserNotFound。然后它被传递到DefineAuthChallengeVerifyAuthChallenge, 和CreateAuthChallengeLambda 触发器 您可以使用此触发器模拟不存在的用户的自定义授权挑战。如果您为不存在的用户调用身份验证前 Lambda 触发器,则 Amazon Cognito 将返回UserNotFound