Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

身份验证前 Lambda 触发器

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

身份验证前 Lambda 流程

客户端身份验证流程

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

服务器身份验证流程

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

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

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

身份验证前 Lambda 触发器参数

这些是此 Lambda 函数除常用参数以外还必需的参数。

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

身份验证前请求参数

userAttributes

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

validationData

在用户的登录请求中包含验证数据的一个或多个键/值对。

身份验证前响应参数

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

身份验证教程

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

平台 教程
教程 通过 JavaScript 登录用户
Android Identity SDK 通过 Android 登录用户
iOS Identity SDK 通过 iOS 登录用户

身份验证前示例

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

Node.jsPython
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
JSON
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }