问题标签 [lambda-authorizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
aws-lambda - 如何在我的 lambda 代码中使用 AWS Custom Authorizer 中生成的权限?
我想生成一个自定义策略,提供对 AWS 自定义授权方内的 DynamoDB 表的细粒度访问。这可能吗?
在无服务器中,我的配置如下所示:
我已验证正在调用我的自定义授权方,并且它生成的各种权限(sts:AssumeRole
、lambda:InvokeFunction
、execute-api:Invoke
和其他权限)是成功调用 API 处理程序所必需的。所以我的自定义授权人正在工作,它提供的结果是必要的。
但是,当授权者包含 dynamodb 权限时,例如像 { Effect: "Allow", Action: "dynamodb: ", "Resource": " " }这样的语句
我的 API 处理程序(GraphQLAPI 函数)失败并显示如下消息
(我注意到投诉是关于索引权限的,因此还尝试为该索引和/或所有索引添加特定权限,但这没有效果。)
底线,经过多次不同的尝试,自定义授权者发出的 dynamodb 权限被完全忽略。我的 lambda node.js 代码正在使用 AWS 节点 SDK,它应该从实例环境中获取权限。我假设这将包括自定义授权人生成的权限。
最后,我注意到关于如何加载凭证的 AWS javascript SDK 文档只说“执行角色为 Lambda 函数提供了运行和调用其他 Web 服务所需的凭证”。即,它没有提到由自定义授权方发布的动态生成的凭据。
这似乎解释了我所看到的行为。我的 API 处理程序仅具有来自静态定义的执行角色的权限(错误消息也表明了这一点),并且未授予自定义授权者生成的权限。
无论如何,是否可以使用我的自定义授权方在我的 API 处理程序中生成的权限?
amazon-web-services - 401 的自定义响应 Lambda 授权方
使用错误参数中的字符串从 Lambda Authorizer 调用 Lambda 回调函数Unauthorized
会返回带有正文的 401 响应:
{ "message": "Unauthorized" }
尝试在响应中使用任何其他字符串会导致响应:
{ "message": null }
相反,如果您在回调的结果参数中返回拒绝策略文档,您将获得 403 响应,例如:
{ "message": "Unable to access resource with an explicit deny" }
环顾四周后,您似乎需要配置网关响应以从 Lambda 授权方返回自定义响应,我已经为 403 响应工作,但无法弄清楚如何为 401 执行此操作。
对于 403,我使用模板创建了网关响应:
{\"message\":\"$context.authorizer.stringKey\"}
然后在结果对象上我设置以下
ResultObject.context.stringKey = 'My custom response'
这有效,并在此处记录。
但是,对于 401,因为我没有返回策略文档,所以我不知道如何使用自定义响应。我创建了与 403 相同的网关响应,但如果我在错误参数中使用任何字符串(“未授权”除外)点击回调,我会收到空消息。我无法返回结果参数,因为这需要是包含策略文档的响应结构。
关于如何使用 401 返回自定义响应的任何想法?
amazon-web-services - 在 lambda 授权方返回错误的请求响应。可能吗?
我正在尝试了解 AWS Api Gateway 中的授权人。据我了解,如果逻辑中的异常发生在授权者中,那么我们肯定会得到 401 和未经授权的消息。是否有可能返回错误的请求响应或无法处理的实体响应?
我发现授权人的工作有点奇怪:
1) Amazon API Gateway 500 错误中的自定义授权方
2) https://forums.aws.amazon.com/message.jspa?messageID=753817
amazon-web-services - 使用 ApiGateway Authorizer 验证 Github Payload Signature (X-Hub-Signature)
我目前正在开发一个简单的 api 来接收 Github 事件有效负载,并且我想验证它们是否来自正确的来源。有了这个,我正在努力在请求标头中使用 hmac 签名(由 github 使用我提供的秘密生成)。为了验证签名,ApiGateway 授权方需要签名 (X-Hub-Signature)、用于生成签名的秘密以及消息的正文。据我所知,Api Gateway 不允许您将正文传递给 ApiGateway Authorizer。有谁知道不需要额外代理 lambdas 和 s3 的解决方法?
*注意:请求者是 Github Webhook 服务(无法将正文添加到标头)
基本 ApiGateway 身份验证文档: https ://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html
amazon-web-services - 如何从 API 网关端点向 lambda 授权方提供自定义数据
我们使用的 API 网关端点应通过对特定受众的权限进行限制。
这个想法是使用 lambda 授权器从外部服务获取权限,然后创建策略以允许或拒绝对端点的访问。
为了将权限与 API 端点匹配,端点需要向授权方提供其所需的权限。
我现在的问题是如何使用自己所需的权限来丰富端点数据,并在授权者 lambda(可能通过事件)中使用它们以进行进一步验证。
例子:
- User1 被转发到第一个端点GET/petstore/pets(这个端点需要权限 -> View:Pets)
- Lambda 授权方向外部服务请求用户权限
- 服务返回:[ View:Pets , View:Somethingelse等]
- lambda 授权者将用户权限与所需的端点权限进行匹配,并在匹配时创建允许策略
- User2也一样但是没有查看宠物的权限,不匹配->拒绝
这是我的 lambda 代码:
checkAuthorization 方法的代码:
event.endpointPermissions基本上是我正在寻找的。根据 API 端点,这应该填充该端点所需的权限。resourceAuthorizer 然后从外部服务获取用户权限并将它们与端点权限进行比较,然后创建允许或拒绝策略。
那么我在哪里可以在我的 API Endpoint 中输入 endpointPermissions 以将它们提供给 Authorizer?
java - Java 请求类型 AWS Lambda 授权方
我是学习 AWS Lambda 的新手,想用 Java 实现 API 网关的授权器。请求类型授权者的方法头是什么?这是我到目前为止所拥有的:
我正在返回 AWS-labs 示例中给出的 AuthPolicy 对象:
https ://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/blob/master/blueprints/java/src/example/APIGatewayAuthorizerHandler.java
上面的结构是token类型的,我需要request类型。我收到此错误:由于配置错误
,解析前授权方结果正文
执行失败:响应中的 JSON 无效:
请帮忙。
amazon-web-services - AWS 使用计划 API 密钥和自定义授权方
AWS API Gateway 中的使用计划密钥是否先于自定义授权方进行评估?如果在运行授权器之前无法评估使用计划 API 密钥,我可以看到自定义授权器的缺陷,即能够在外部泛滥从而切断正常使用。
amazon-web-services - 如何从限制对特定 API 端点访问的 lambda 授权方生成 IAM 策略?
我想做一个 Lambda 授权方,它验证由第三方 IDP(例如 Onelogin)颁发的 jwt 令牌,生成一个 IAM 策略,根据从 jwt 令牌中提取的权限限制用户从 API 网关访问特定 API 端点。我还想让 API Gateway 缓存生成的策略,这样来自同一用户的请求就不需要传递给授权方,并且可以根据缓存的策略被接受或拒绝。这样的场景可能吗?如果是,我将不胜感激有关如何配置它的任何指导。
谢谢!
java - 在 AWS Lambda Authorizer 中访问 URL 路径
在 API Gateway 中,我有一个如下所示的 GET 端点(也有一些请求标头)
Lambda(授权者)代码有没有办法读取“myspecialkey”?
提前致谢