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

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

管理错误响应

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

当启用自定义错误响应时, Amazon Cognito 身份验证 APIs 返回通用身份验证失败响应。错误响应告诉您用户名或密码不正确。 Amazon Cognito 账户确认和密码恢复 APIs 返回响应,指示代码已发送到模拟传递介质。当状态为 ENABLED 用户不存在。以下是 Amazon Cognito 操作 PreventUserExistenceErrors 设定为 ENABLED.

用户身份验证操作

您可以使用以下任一验证流程方法进行以下操作。

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

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

在的身份验证流程中 ADMIN_USER_PASSWORD_AUTHUSER_PASSWORD_AUTH 用户名和密码通过单次呼叫返回 InitiateAuth。 Amazon Cognito 返回通用 NotAuthorizedException 指出用户名或密码不正确的错误。

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

在USER_SRP_AUTH身份验证流程中 Amazon Cognito 在第一步中接收用户名和SRP参数‘A’。作为回应 Amazon Cognito 根据SRP协议返回用户的SRP参数“B”和“盐”。当找不到用户时, Amazon Cognito 在第一步中返回模拟响应,如 RFC5054(RFC5054码)。 Amazon Cognito 返回相同的“盐”和内部用户ID 通用独特 IDentifier (UUID)(单位) 相同用户名和用户池组合的格式。当下一次操作 RespondToAuthChallenge 密码运行证明, Amazon Cognito 返回通用 NotAuthorizedException 指出用户名或密码不正确的错误。

注意

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

ForgotPassword

当找不到、禁用或没有恢复其密码的机制时, Amazon Cognito 退货 CodeDeliveryDetails 使用模拟的输送介质。模拟的传递介质由用户池的输入用户名格式和验证设置决定。

ConfirmForgotPassword

Amazon Cognito 返回 CodeMismatchException 不存在或已禁用的用户出错。如果在使用时不需要代码 ForgotPassword, Amazon Cognito 返回 ExpiredCodeException 错误。

ResendConfirmationCode

Amazon Cognito 退货 CodeDeliveryDetails 禁用的用户或不存在的用户。 Amazon Cognito 将确认代码发送到现有用户的电子邮件或电话号码。

ConfirmSignUp

ExpiredCodeException 如果代码已过期,会返回。 Amazon Cognito 退货 NotAuthorizedException 当用户未获得授权时。如果代码与服务器预期不匹配 Amazon Cognito 退货 CodeMismatchException.

SignUp

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

导入的用户

如果 PreventUserExistenceErrors 在对导入的用户进行身份验证期间启用通用 NotAuthorizedException 返回错误,表明用户名或密码不正确,而不是返回 PasswordResetRequiredException。参见 要求导入的用户重置其密码 获取更多信息。

迁移用户 Lambda 触发

Amazon Cognito 为在原始事件上下文中由 Lambda 触发。有关更多信息,请参阅 迁移用户Lambda触发器.

自定义身份验证挑战 Lambda 触发

如果您使用 自定义身份验证挑战 Lambda 触发 并且启用错误响应,然后 LambdaChallenge 返回名为的布尔参数 UserNotFound。那么它就通过了 DefineAuthChallenge, VerifyAuthChallenge,和 CreateAuthChallenge Lambda 会触发。您可以使用此触发器为不存在的用户模拟自定义授权挑战。如果您调用预验证 Lambda 触发条件, Amazon Cognito 退货 UserNotFound.