我必须使用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' - >缓存是禁用的。
4)测试授权者并返回正确的策略
5)我已经部署了API
6)尝试使用Postman调用带有'授权:承载'的URL。输出是{ “消息”:“未经授权” }
任何帮助将不胜感激!感谢。
答案 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天。无论如何谢谢!