AWS API网关自定义授权程序提供异常

时间:2017-10-10 07:35:25

标签: lambda authorization jwt aws-api-gateway

我必须使用AWS API Gateway和Lambda创建自定义授权。

我按照offical doc的所有步骤提到了。但最后网关正在提供Unauthorized

以下是我遵循的步骤。

1)创建lambda函数(根据github上提供的蓝图)。它将以适当的格式返回policyDocument。这一直是    用以下测试数据测试 - { "type": "TOKEN", "methodArn": "arn:aws:execute-api:us-west-2:xxxxxxxxxx:fgdfgdfg/null/GET/", "authorizationToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMzQ1Njc4OTAiLCJuYW1lIjoiSm9obiBEb2UiLCJhZG1pbiI6dHJ1ZX0.x8R6LPytDMrPuUBY71skyLBUrkme86DhioN3L7LY_-0" }

2)创建API。选择“创建方法” - >获取 - > Selet集成类型为“Lambda函数” - >选择区域和lambda函数名称    已在上一步中创建。

3)点击授权人(左侧面板) - >创建新授权者 - >给定授权人名称 - >选择Lambda作为类型 - >选择Lambda函数 - >    Lambda执行角色是具有basix执行角色策略的arn - >有效载荷作为令牌 - >令牌源是'method.request.header.Authorization' - >缓存是禁用的。

Refer this

4)测试授权者并返回正确的策略

5)我已经部署了API

6)尝试使用Postman调用带有'授权:承载'的URL。输出是{     “消息”:“未经授权” }

任何帮助将不胜感激!感谢。

2 个答案:

答案 0 :(得分:0)

您的令牌来源是"授权"但是在您的有效负载中,您可以通过" AuthorizationToken"。

发送它

答案 1 :(得分:0)

嗯,AWS很棒。我从一个月开始一直在玩API Gateway。 API Gateway的文档确实需要一些更新。我经历过使用API​​ Gateway需要大量的试错法。看来文档(特别是API Gateway的自定义授权程序)是通过假设开发人员知道构建API网关授权程序所需的内容编写的。

我不知道我是否遗漏了某些内容,或者它太复杂而无法理解自定义授权程序的文档。在调查(相当长的时间)后,我发现它的确切工作。我会尝试在下面解释一下可能会觉得有用的人。

自定义授权器的概念非常简单。当我们创建授权器(基于令牌或基于请求)时,来自客户端的请求将首先执行授权者(Lambda函数),然后,如果允许请求,API网关将请求转发到上游(或端点URL)。而已!这里不再混淆了。

这就是我对文档的期望。有视频可用,但他们需要更新,因为已经添加了新的功能。(如基于请求的授权人)

我正在通过比较AWS API Gateway和Kong API Gateway来构建POC。相信我,我只需要一两天的时间来完成Kong的设置和AWS API Gateway的8-10天。无论如何谢谢!