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

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

身份验证前 Lambda 器

当用户尝试登录时,Amazon Cognito 会调用此触发器,让自定义验证能够接受或拒绝身份验证请求。

注意

触发器取决于激活触发器之前用户池中的现有用户。

身份验证 Lambda 程

客户端身份验证流程


                    身份验证前 Lambda 触发器 — 客户端流程

服务器身份验证流程


                    身份验证前 Lambda 触发器 — 服务器流程

该请求包含客户端中的数据,来自传递到用户池 InitiateAuth 和 AdminInitiateAuth API 方法的 ClientMetadata 值。

有关更多信息,请参阅User池身份验证流程

身份验证前 Lambda 触发器参数

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

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "validationData": { "string": "string", . . . }, "userNotFound": boolean }, "response": {} }

身份验证前请求参数

userAttributes

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

userNotFound

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

validationData

在用户的登录请求中包含验证数据的一个或多个键/值对。您可以使用 Lambda 函数中的 ClientMetadata 参数将此数据传递给 Lambda 函数。InitiateAuthAdminInitiateAuthAPI 操作。

身份验证前响应参数

预计响应中没有其他返回信息。

身份验证教程

身份验证前 Lambda 函数在 Amazon Cognito 登录新用户之前触发。请参阅这些适用于 JavaScript、Android 和 iOS 的登录教程。

平台 教程
JavaScript 身份开发工具包 通过 JavaScript 登录用户
Android 身份开发工具包 通过 Android 登录用户
iOS 身份开发工具包 通过 iOS 登录用户

身份验证前示例

此示例函数将阻止来自特定用户池应用程序客户端的用户登录用户池。

Node.js
exports.handler = (event, context, callback) => { if (event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked") { var error = new Error("Cannot authenticate users from this user pool app client"); // Return error to Amazon Cognito callback(error, event); } // Return to Amazon Cognito callback(null, event); };
Python
def lambda_handler(event, context): if event['callerContext']['clientId'] == "<user pool app client id to be blocked>": raise Exception("Cannot authenticate users from this user pool app client") # Return to Amazon Cognito return event

Amazon Cognito 将事件信息传递给 Lambda 函数。此函数随后将同一事件对象连同响应中的任何更改返回到 Amazon Cognito。在 Lambda 控制台中,您可以设置一个测试事件,该事件包含与您的 Lambda 触发器相关的数据。以下是此代码示例的测试事件:

JSON
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }