执行API方法

时间:2019-02-05 13:34:54

标签: asp.net-core aws-lambda aws-serverless

我正在使用AWS lambda无服务器WEB API应用程序。我的控制器具有一种仅返回一些字符串值的方法。我想添加一个对请求者进行身份验证的身份验证层。请求者应将“ Authorizer”密钥传递给标头以进行身份​​验证。

This文章帮助我做到了。我使用了这个example

我创建了一个“自定义授权者” 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配置了自定义授权者。

enter image description here

enter image description here

为什么当我点击API URL时没有调用我的授权者。

1 个答案:

答案 0 :(得分:2)

自定义授权者仅在部署阶段后才能开始工作。确保已部署。