问题标签 [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 投票
2 回答
609 浏览

amazon-web-services - 每次设备连接并发送数据时,是否使用带有 aws-iot (wss) 的自定义授权方创建一个新设备?

考虑到有大量移动设备(Android 和 iOS)需要通过 MQTT自定义授权器向 AWS-IoT 发送数据,以根据业务逻辑检查有效令牌,这将被实施。

参考具有 AWS IoT 和 Websockets 的 IoT 应用程序,幻灯片 56/60 显示了注册过程,其中 lambda 用于创建和附加策略。

这是否表明 lambda 将创建一个新的 AWS-IoT 设备并将策略附加到该设备?每次新用户注册时,这会导致创建新的 AWS-IoT 设备?

0 投票
2 回答
1285 浏览

websocket - 如何使用 CloudFormation for API Gateway 为自定义 websocket 请求授权者创建 lambda 权限?

我一直在尝试为 API Gateway 和 $connect 路由的 websockets 请求授权器创建 lambda 权限。AWS 文档没有提到为 websocket 授权者创建正确的 lambda 权限。当我尝试连接到我的自定义授权方时,我不断收到 500 错误。

由于 AWS 文档(https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-lambda-auth.html)没有提及有关此权限的任何内容,因此我认为必须创建一个 lambda 权限,就像一个 TOKEN 授权者。

自定义授权人是使用我的 CloudFormation 脚本创建的,如下所示:

当我使用控制台手动创建授权方时,最后会收到以下提示:

在此处输入图像描述

一旦我将它与 $connect 端点连接起来,这个手动创建的授权器就可以工作。

所以,我试图在我的 CloudFormation 脚本中设置这个权限。我尝试了以下设置,但它不起作用。我不断收到 500 错误:

有人知道 websocket API Gateway $connect 端点的自定义授权者的正确 lambda 权限设置吗?

0 投票
1 回答
508 浏览

amazon-web-services - AWS 自定义授权方超时

我有使用 serverless-http 创建快速服务器的无服务器 lambda 函数 (AWS)。我用来验证请求的自定义授权器在成功运行后超时。以下是根据 CloudWatch 日志返回的策略:

2019-02-27T12:06:49.000Z 7b138c38-b316-4ae0-97ad-36242833cefa 策略 [ { 操作:'execute-api:Invoke',效果:'允许',资源:'arn:aws:execute-api:eu -west-1:xxxx:xxxx/dev/GET/data/age' } ]

在此之后我得到这个日志:

2019-02-27T12:06:54.778Z 7b138c38-b316-4ae0-97ad-36242833cefa 任务在 6.01 秒后超时

我应该在 auth 之后执行的函数甚至没有被调用。我正在使用 async/await 来针对标头中的授权令牌获取业务。

这是我的授权人代码:

generatePolicy功能:

serverless.yml

serverless-offline注意:如果我使用插件在本地运行它,同样的工作。

0 投票
0 回答
1373 浏览

amazon-web-services - 在 AWS Api 网关自定义授权方中,如何根据对标头的验证将自定义标头添加到输入请求并发送到后端

在 AWS API 网关中,我使用自定义 lambda 授权器来验证请求标头。我需要根据验证结果更新现有标题或添加新标题。下面是 java 中的 lambda 授权逻辑,验证按预期工作。无论更新标头值,后端 lambda 中接收到的事件对象都是空的。

您能否告诉我如何配置授权方,以便在成功授权后将 API 网关请求的输入请求发送到集成服务。

0 投票
1 回答
1085 浏览

asp.net-core - 从 lambda 授权方响应中提取身份

我制作了一个自定义 lambda 授权器来验证 JWT 并返回Allow策略。

现在我需要在我的资源服务器上使用这个身份。

问题是我在授权人上下文中提出的声明authorizer直接出现在

但我Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction希望那些在authorizer.claims.

像这样:

我知道这一点,因为当我使用内置的 Cognito 用户池授权器时它正在工作,它正在输入这样的输入。

我设法发现不允许 Lambda Authorizer 将嵌套对象添加到上下文中(并测试authorizer error如果我这样做它会抛出。)

我还发现,在APIGatewayProxyFunction提取身份时,它会查看 Authorizer.Claims。

因此,我需要以某种方式绕过Claims属性在我的资源服务器上提取它们,或者将嵌套对象添加到授权方响应中,这是不允许的。

做什么?

0 投票
1 回答
118 浏览

amazon-web-services - AWS Custom Lamba Authorizer 第二次为来自客户端的单个请求调用了两次空事件对象

我已经配置了一个 REQUEST 类型的自定义 lambda 授权器。我在 API --> Authorizers --> Identity Sources 和 1 个默认授权中添加了 4 个新的自定义请求标头作为身份源。所以总共有5个。

当我调用配置了上述授权方的 API 时,授权方被调用了两次。第一次使用事件对象中所有参数的值,第二次使用空事件对象。

由于事件对象为空,即使第一次成功验证声明并返回允许策略,我的代码也会抛出空指针。

最初我尝试使用令牌类型授权器,但仅令牌本身不足以让我验证。令牌类型工作得很好。即没有第二次请求。当我改用 REQUEST 类型时,我开始看到这个问题。

以下是来自 cloudwatch 的日志

0 投票
1 回答
143 浏览

python - AWS 自定义 Lambda 授权方:基于具有相同前导 URL 的 URL 参数允许和拒绝

我正在为 AWS API Gateway 编写自己的 AWS 自定义 Lambda 授权程序。我需要允许以下 URL:

但在同一政策中,我也想拒绝以下 URL。

我查看了政策条件,但找不到将 URL 参数detail放入条件的方法。

有谁知道如何做到这一点的详细信息?

0 投票
3 回答
898 浏览

amazon-web-services - AWS API Gateway 忽略从自定义授权方 Lambda 函数返回的身份验证策略

我正在尝试在 API Gateway 上实现自定义授权,这将通过从 DynamoDB 读取用户对其背后每个特定端点的权限来检查它们。

我将授权人与相关方法相关联(下面的屏幕截图) 在此处输入图像描述

授权人似乎工作正常,它返回的策略对我来说看起来不错(看看下面)

但是,无论策略文档中返回的 Effect 授权者如何,API Gateway 仍然让所有请求都通过。我从下面的 API 端点获得状态 200 以及结果集。

关于 API 网关为什么会忽略该策略的任何想法?

PS 在放星号之前,我尝试使用显式的 principalID(令牌中的用户名/主题)。它的行为相同。

PPS 这是我的 Lambda 函数的完全简化版本,当前设置为始终返回 Deny 作为策略效果......

0 投票
1 回答
215 浏览

aws-lambda - 如何将 lambda 授权信息的输出传递给 AWS API 网关中的另一个 lambda 函数?

我使用 C# 创建了两个 Lambda 函数。一个是授权,另一个是执行一些业务逻辑。

我已将第一个 Lambda 函数配置为 API 网关授权者,将第二个函数配置为资源。

如何将第一个 lambda 函数的响应传递给 API 网关请求,以便第二个可以读取并继续剩余处理?

谢谢萨蒂亚

0 投票
1 回答
50 浏览

aws-lambda - Lambda 授权方不尊重资源

我正在生成以下缓存策略:

然后我提出请求arn:aws:execute-api:us-east-1:12345:hahd712723/active/GET/v1/AccountB'

这应该产生:

但不是新的缓存集,而是我错误地获得了拒绝策略。

似乎主要 Id 是唯一看到的东西,并且资源不受尊重。