创建身份验证质询 Lambda 触发器 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建身份验证质询 Lambda 触发器


            质询 Lambda 触发器
创建身份验证质询

Amazon Cognito 在定义身份验证质询如果指定自定义质询作为定义身份验证质询触发器。它将创建一个自定义身份验证流程

此 Lambda 触发器被调用来创建要向用户显示的质询。此 Lambda 触发器的请求包括challengeNamesessionchallengeName 是一个字符串,是向用户显示的下一质询的名称。此属性的值在 “定义身份验证质询 Lambda” 触发器中设置。

质询循环将一直重复到所有质询得到回答。

创建身份验证质询 Lambda 触发器参数

这些是此 Lambda 函数所需的参数,除了常见参数

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "challengeName": "string", "session": [ ChallengeResult, . . . ], "clientMetadata": { "string": "string", . . . }, "userNotFound": boolean }, "response": { "publicChallengeParameters": { "string": "string", . . . }, "privateChallengeParameters": { "string": "string", . . . }, "challengeMetadata": "string" } }

创建身份验证质询请求参数

userAttributes

表示用户属性的一个或多个名称/值对。

userNotFound

当为您的用户池客户端将 PreventUserExistenceErrors 设置为 ENABLED 时,将填充此布尔值。

challengeName

新质询的名称。

session

会话元素是一组 ChallengeResult 元素,其中,每个元素包含以下元素:

challengeName

质询类型。以下值之一:"CUSTOM_CHALLENGE""PASSWORD_VERIFIER""SMS_MFA""DEVICE_SRP_AUTH""DEVICE_PASSWORD_VERIFIER""ADMIN_NO_SRP_AUTH"

challengeResult

如果用户成功完成质询,则设置为 true,否则设置为 false

challengeMetadata

自定义质询的名称。仅当 challengeName"CUSTOM_CHALLENGE" 时使用。

clientMetadata

一个或多个键值对,您可以将其作为自定义输入内容提供给 Lambda 函数,该函数是为创建身份验证质询触发器指定的。您 Lambda 以 ClientMetadata 用AdminRespondToAuthChallengeRespondToAuthChallengeAPI 操作。

创建身份验证质询响应参数

publicChallengeParameters

客户端应用程序要在向用户显示的质询中使用的一个或多个键/值对。此参数应包含所有必要信息,以向用户准确显示质询。

privateChallengeParameters

此参数仅由 “验证身份验证质询响应” Lambda 触发器使用。此参数应包含所需的所有信息,以验证用户对质询的响应。也就是说,publicChallengeParameters 参数包含向用户显示的问题,privateChallengeParameters 包含问题的有效答案。

challengeMetadata

自定义质询的名称 (如果是自定义质询)。

创建身份验证质询示例

CAPTCHA 作为针对用户的质询而创建。CAPTCHA 图像的 URL 作为 captchaUrl 添加到公有质询参数中,并且预期答案添加到私有质询参数中。

Node.js
exports.handler = (event, context, callback) => { if (event.request.challengeName == 'CUSTOM_CHALLENGE') { event.response.publicChallengeParameters = {}; event.response.publicChallengeParameters.captchaUrl = 'url/123.jpg' event.response.privateChallengeParameters = {}; event.response.privateChallengeParameters.answer = '5'; event.response.challengeMetadata = 'CAPTCHA_CHALLENGE'; } Return to Amazon Cognito callback(null, event); }