步骤 1:检查 Lambda 触发程序
首先,检查您的 Lambda 触发程序是否正确配置了。确保在用户池中指定了正确的 Lambda 函数作为您的自定义身份验证函数并设置了正确的触发程序。
以下是将 Lambda 函数与 AWS Cognito 用户池相关联的示例代码:
exports.handler = (event, context, callback) => {
// 在代码中放置自定义身份验证逻辑
// event.request
包含发起身份验证的请求
// 身份验证成功,callback()
不带参数
// 身份验证失败,使用如下方法返回错误信息
// callback(new Error('authentication failed'))
};
步骤 2: 检查 Lambda 函数的返回值
检查您的 Lambda 函数的返回值。确保您的自定义身份验证函数通过调用回调(callback)不带参数的方式来表示身份验证成功,并通过调用回调(callback)带参数的方式来表示身份验证失败。例如:
callback(); // 代表身份验证成功 或 callback(new Error('authentication failed')); // 代表身份验证失败
这是一种正确的 Lambda 函数实现方法:
exports.handler = (event, context, callback) => { if (event.request.userAttributes.email !== 'user1@example.com') { callback(new Error('authentication failed')); } else { callback(null, event); } };
步骤 3: 检查 IAM 权限
检查执行自定义身份验证 Lambda 函数的 IAM 角色的权限。确保您为您的角色分配了正确的 Cognito 权限。
以下是一个正确配置 IAM 角色的例子:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cognito-idp:AdminGetUser",
"cognito-idp:AdminInitiateAuth",
"cognito-idp:AdminRespondToAuthChallenge"
],
"Resource": [
"arn:aws:cognito-idp:
完成以上步骤后,您的 AWS Cognito 用户池自定义身份验证函数应该