本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管理错误响应
Amazon Cognito 支持自定义用户池返回的错误响应。自定义错误响应可用于身份验证、确认和密码恢复相关操作。使用 PreventUserExistenceErrors
设置用户池应用程序客户端以启用或禁用用户存在相关错误。
当启用自定义错误响应时, Amazon Cognito 身份验证 APIs 返回通用身份验证失败响应。错误响应告诉您用户名或密码不正确。 Amazon Cognito
账户确认和密码恢复 APIs 返回响应,指示代码已发送到模拟传递介质。当状态为 ENABLED
用户不存在。以下是 Amazon Cognito 操作 PreventUserExistenceErrors
设定为 ENABLED
.
用户身份验证操作
您可以使用以下任一验证流程方法进行以下操作。
-
AdminInitiateAuth
-
AdminRespondToAuthChallenge
-
InitiateAuth
-
RespondToAuthChallenge
- 基于用户名密码的身份验证
-
在的身份验证流程中
ADMIN_USER_PASSWORD_AUTH
和USER_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
.