本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
身份验证前 Lambda 触发器
当用户尝试登录时,Amazon Cognito 会调用此触发器,以便您可以创建用于执行准备操作的自定义验证。例如,您可以拒绝身份验证请求或将会话数据记录到外部系统。
注意
当用户不存在或您的用户群体中已经有会话时,此 Lambda 触发器不会激活。如果将用户群体应用程序客户端的 PreventUserExistenceErrors
设置设为 ENABLED
,则 Lambda 触发器将会激活。
身份验证流概述
该请求包含来自您的应用程序传递给用户池InitiateAuth
和AdminInitiateAuth
API操作的ClientMetadata
值的客户端验证数据。
有关更多信息,请参阅 用户池身份验证流程。
身份验证前 Lambda 触发器参数
Amazon Cognito 传递给此 Lambda 函数的请求是以下参数和 Amazon Cognito 添加到所有请求中的常用参数的组合。
身份验证前请求参数
- userAttributes
-
表示用户属性的一个或多个名称/值对。
- userNotFound
-
当您将用户池客户端的
PreventUserExistenceErrors
设置为ENABLED
时,Amazon Cognito 将填充此布尔值。 - validationData
-
一个或多个键/值对,包含用户的登录请求中的验证数据。要将此数据传递给您的 Lambda 函数,请使用InitiateAuth和AdminInitiateAuthAPI操作中的 ClientMetadata 参数。
身份验证前响应参数
Amazon Cognito 不需要响应中任何额外的返回信息。您的函数可能会返回错误以拒绝登录尝试,或者使用API操作来查询和修改您的资源。
身份验证前示例
此示例函数阻止用户使用特定的应用程序客户端登录到您的用户群体。由于预身份验证 Lambda 函数不会在您的用户有现有会话时调用,因此,此函数仅阻止使用您想要屏蔽的应用程序客户端 ID 的新会话。
Amazon Cognito 将事件信息传递给 Lambda 函数。随后,该函数将相同事件对象随同响应中的任何更改返回给 Amazon Cognito。在 Lambda 控制台中,您可以设置一个测试事件,该事件包含与您的 Lambda 触发器相关的数据。以下是此代码示例的一个测试事件: