我正在使用AWS lambda无服务器WEB API应用程序。我的控制器具有一种仅返回一些字符串值的方法。我想添加一个对请求者进行身份验证的身份验证层。请求者应将“ Authorizer”密钥传递给标头以进行身份验证。
我创建了一个“自定义授权者” lambda,用于验证在API请求的标头中传递的用户。但是,当我点击API URL时,我的自定义授权者没有调用。下面是我的自定义授权者lambda函数代码
public APIGatewayCustomAuthorizerResponse FunctionHandler(APIGatewayCustomAuthorizerRequest apigAuthRequest, ILambdaContext context)
{
Console.WriteLine("1");
bool ok = false;
if (apigAuthRequest.Headers["Authorization"] == "test")
{
ok = true;
Console.WriteLine("2");
}
return new APIGatewayCustomAuthorizerResponse
{
PrincipalID = "test",
PolicyDocument = new APIGatewayCustomAuthorizerPolicy
{
Version = "2012-10-17",
Statement = new List<APIGatewayCustomAuthorizerPolicy.IAMPolicyStatement>() {
new APIGatewayCustomAuthorizerPolicy.IAMPolicyStatement
{
Action = new HashSet<string>(){"execute-api:Invoke"},
Effect = ok ? "Allow" : "Deny",
Resource = new HashSet<string>(){ apigAuthRequest.MethodArn } // resource arn here
}
},
}
};
}
我期望在调用API时调用此函数。
下面是AWS Console-> API Gateway的屏幕截图,其中我为我的API配置了自定义授权者。
为什么当我点击API URL时没有调用我的授权者。
答案 0 :(得分:2)
自定义授权者仅在部署阶段后才能开始工作。确保已部署。