问题标签 [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.

0 投票
1 回答
751 浏览

aws-lambda - 如何在我的 lambda 代码中使用 AWS Custom Authorizer 中生成的权限?

我想生成一个自定义策略,提供对 AWS 自定义授权方内的 DynamoDB 表的细粒度访问。这可能吗?

在无服务器中,我的配置如下所示:

我已验证正在调用我的自定义授权方,并且它生成的各种权限(sts:AssumeRolelambda:InvokeFunctionexecute-api:Invoke和其他权限)是成功调用 API 处理程序所必需的。所以我的自定义授权人正在工作,它提供的结果是必要的。

但是,当授权者包含 dynamodb 权限时,例如像 { Effect: "Allow", Action: "dynamodb: ", "Resource": " " }这样的语句

我的 API 处理程序(GraphQLAPI 函数)失败并显示如下消息

(我注意到投诉是关于索引权限的,因此还尝试为该索引和/或所有索引添加特定权限,但这没有效果。)

底线,经过多次不同的尝试,自定义授权者发出的 dynamodb 权限被完全忽略。我的 lambda node.js 代码正在使用 AWS 节点 SDK,它应该从实例环境中获取权限。我假设这将包括自定义授权人生成的权限。

最后,我注意到关于如何加载凭证的 AWS javascript SDK 文档只说“执行角色为 Lambda 函数提供了运行和调用其他 Web 服务所需的凭证”。即,它没有提到由自定义授权方发布的动态生成的凭据。

这似乎解释了我所看到的行为。我的 API 处理程序仅具有来自静态定义的执行角色的权限(错误消息也表明了这一点),并且未授予自定义授权者生成的权限。

无论如何,是否可以使用我的自定义授权方在我的 API 处理程序中生成的权限?

0 投票
2 回答
4750 浏览

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 返回自定义响应的任何想法?

0 投票
1 回答
1441 浏览

amazon-web-services - 在 lambda 授权方返回错误的请求响应。可能吗?

我正在尝试了解 AWS Api Gateway 中的授权人。据我了解,如果逻辑中的异常发生在授权者中,那么我们肯定会得到 401 和未经授权的消息。是否有可能返回错误的请求响应或无法处理的实体响应?

我发现授权人的工作有点奇怪:

1) Amazon API Gateway 500 错误中的自定义授权方

2) https://forums.aws.amazon.com/message.jspa?messageID=753817

0 投票
1 回答
728 浏览

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

0 投票
2 回答
521 浏览

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?

0 投票
1 回答
1869 浏览

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 无效:

请帮忙。

0 投票
0 回答
112 浏览

amazon-web-services - AWS 使用计划 API 密钥和自定义授权方

AWS API Gateway 中的使用计划密钥是否先于自定义授权方进行评估?如果在运行授权器之前无法评估使用计划 API 密钥,我可以看到自定义授权器的缺陷,即能够在外部泛滥从而切断正常使用。

0 投票
0 回答
77 浏览

amazon-web-services - 如何从限制对特定 API 端点访问的 lambda 授权方生成 IAM 策略?

我想做一个 Lambda 授权方,它验证由第三方 IDP(例如 Onelogin)颁发的 jwt 令牌,生成一个 IAM 策略,根据从 jwt 令牌中提取的权限限制用户从 API 网关访问特定 API 端点。我还想让 API Gateway 缓存生成的策略,这样来自同一用户的请求就不需要传递给授权方,并且可以根据缓存的策略被接受或拒绝。这样的场景可能吗?如果是,我将不胜感激有关如何配置它的任何指导。

谢谢!

0 投票
1 回答
612 浏览

aws-lambda - 未调用 lambda 授权程序

我已经实现了一个 lambda 授权器,并将其与 API 网关上的 lambda 代理集成。

当我从 API Gateway 测试授权方时,它工作正常,但是当我尝试从 Postman 调用第二个 lambda 上的端点时,请求似乎跳过了授权方并直接命中了第二个 lambda。

在此处输入图像描述

我还尝试不仅在 API 级别使用授权器,而且还对 API 中的每个方法使用授权器,但这也无济于事。 在此处输入图像描述

0 投票
1 回答
715 浏览

java - 在 AWS Lambda Authorizer 中访问 URL 路径

在 API Gateway 中,我有一个如下所示的 GET 端点(也有一些请求标头)

Lambda(授权者)代码有没有办法读取“myspecialkey”?

提前致谢