问题标签 [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 回答
318 浏览

amazon-web-services - Aws Cognito:如何使用自定义属性在无服务器堆栈中授权用户?

问题: 在我的应用程序中,用户是团队的一部分,可以访问团队资源(例如任务)。当用户对任务发出获取请求时,我必须验证该用户是否是拥有该任务的团队的一员。我将如何在我的堆栈中做到这一点?

堆栈: 我有一个 HttpApi 形式的 Api 网关,后面有一堆 Lambda,它们从 DynamoDb 表中获取资源。

当前解决方案: 我已经在路由上配置了 JWT 授权方,并且正在发送我的用户在登录 lambdas 时获得的访问令牌。这包含用户 ID。我使用此 ID 对数据库进行额外调用,以检查它可以访问哪些团队。这意味着每个请求都会额外调用 dynamo db。

更好的解决方案是什么样的? 我习惯于向我的令牌添加授权资源所需的声明(我一直在不同公司运行许多身份服务器),但这似乎不是在这个堆栈中完成的方式。我不确定使用 aws 无服务器堆栈向用户授权用户 ID 以外的信息的“推荐”方式是什么。请指教=)

这是项目来源(正在进行的工作等): https ://github.com/stilren/typescript-cdk-react/tree/master/backend

0 投票
1 回答
975 浏览

amazon-web-services - 自定义授权者的 AWS API 网关 403 错误

我正在使用 Claudia-api-builder 创建和部署。 https://github.com/claudiajs/example-projects/tree/master/custom-authorizers

我的 AWS 自定义授权方如下所示:

资源中的第一个 API 工作正常,但是当我调用第二个 API i:e 时:

它给了我 403 Forbidden :

就我而言,授权缓存也被禁用

这个问题有什么解决办法吗?

0 投票
1 回答
120 浏览

amazon-web-services - 网关 V2 API 的 AWS websocket $connect 路径的返回对象要求是什么

我正在使用 terraform 使用他们的 AWS gatewayv2 资源创建一个 websocket,例如aws_apigatewayv2_routeaws_apigatewayv2_authorizer

当我的授权 lambda 运行时,它"type": "REQUEST"通过 headers.Auth 从传入事件中获取一个令牌,它看起来像“Bearer eyJmaWOiQiI3Y...JTMjU2In0.eyJxpWIiOi...”(一个很长的字符串)。令牌是“Bearer”之后的部分。

该代码处理令牌以获取“孩子”等,并将其与从 cognito jwks.json 文件中检索到的密钥进行匹配(这是我从某处 AWS 网站获得的示例代码)。

代码流向“签名成功验证”点——到目前为止很棒!

问题是:授权者 lambda 应该返回什么?

成功验证签名的示例代码表明应该返回一个声明对象。看起来像这样:

其他示例代码表明应该返回一个 authReponse,如下所示:

一些价值观已经改变以保护无辜者:-)

我已经尝试了很多事情,但是我发起请求的 wscat cli 命令要么得到要么Unexpected server response: 403--Unexpected server response: 500取决于我尝试的变体。

我也尝试过返回一个简单的{ "statusCode": 200 }对象——这也不起作用。

0 投票
0 回答
772 浏览

amazon-web-services - 如何使用 AWS 中 Cognito 用户池的自定义属性授权 API?

我在 AWS API Gateway 中有一个 API。在方法请求中,我在此 API 上的 GET 方法的设置中使用我的自定义 Cognito 授权器作为“授权”。

所以我已经有了通过 Cognito 获取访问令牌的机制。我现在要做的是访问Cognito 用户池中的自定义属性。自定义属性称为 StudentCode。例如,我希望只有代码为“500”的学生有权使用我的 API 的 GET 方法。

我该如何使用 Cognito 执行此操作?我是否需要编写一个 lambda 授权程序,或者可以使用 Cognito/API Gateway/等无代码地完成此操作?

谢谢!

0 投票
1 回答
333 浏览

aws-lambda - 无服务器警告:有响应时没有 principalId

尝试将serverless-local-authorizers-plugin集成到使用 AWS Lambda Authorizer 的系统中。当我打印响应时,它确实包含 aprincipalId并且我在一个对象中返回它,就像在线 lambda 响应一样。为什么我收到错误的任何想法

Serverless: Warning: No principalId in response?

它是如何返回的:

本地认证代理功能

0 投票
1 回答
223 浏览

amazon-web-services - AWS X-Ray 未在 API 网关的服务地图中显示授权方

API 网关 --> 自定义授权方(Lambda) --> NLB --> Fargate 任务

以上是我的应用程序的请求流程,我在 API Gateway 阶段启用了 X-Ray 并重新部署了 API。

但是,在 X-Ray 跟踪映射图中,我只看到 API Gateway 和 NLB。

Trace maps 是这样的,API Gateway --> NLB。

  1. 我应该怎么做才能获得自定义授权人的跟踪?
  2. 我应该怎么做才能跟踪 NLB --> Fargate?
0 投票
1 回答
48 浏览

amazon-web-services - AWS lambda 以编程方式设置函数访问策略

我正在尝试使用此示例设置用户特定的 lambda 策略。有人能告诉我为什么这个只访问单个 lambda 的资源规范是错误的吗?

当我使用:

它运行良好(用户对所有 lambda 具有完全访问权限),但是当我尝试将访问限制为仅允许单个 lambda 函数时,当我尝试访问它时,我得到“用户无权访问资源”。我确认该函数是 lambda 的确切名称。

我的代码创建的完整政策声明是:

0 投票
1 回答
1140 浏览

amazon-web-services - API 创新不会触发 AWS API Gateway 的基于自定义请求的 lambda 授权程序

根据文档 ( https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html )为我的 AWS API Gateway 创建了一个简单的基于请求的简单授权方

在测试授权方(使用虚拟设置来验证授权标头中是否包含密钥“test”)时,授权方工作正常,但是在直接从端点调用 API 时,根本没有调用授权方,我得到了我的 API 响应(其中应该被阻止,因为没有通过标题)。

使用无效密钥的授权人测试:得到预期的 401

在此处输入图像描述

使用有效密钥的授权人测试:获得预期 200

在此处输入图像描述

直接从web调用API端点成功:

在此处输入图像描述

我的 API Gateway 资源策略只想限制来自特定 IP 范围的调用:

授权人 Lambda 代码:

我已经尝试过的:

  1. 添加授权方后,我已经重新部署了 API。
  2. 我正在从邮递员和网络浏览器测试这个,而不是网关测试,因为它会绕过授权者。
0 投票
1 回答
570 浏览

aws-lambda - 如何将 Lambda Authorizer 上下文参数传递给后端 API

我们的应用程序中有以下架构。

在此处输入图像描述

我能够在 Lambda Authorizer 的帮助下验证 Firebase IdToken,并能够使用该令牌获取用户详细信息,例如(电子邮件/电话号码/个人资料图片)。我已经在上下文中添加了所有这些参数并返回,

我已经测试了 Lambda Authorizer (AWS UI),在响应中获取了这些参数。

如何将这些详细信息从 Lambda Authorizer 传递到 API Gateway 到后端 API(在 API Gateway 下)?

0 投票
2 回答
333 浏览

aws-lambda - 如何从 AWS Lambda Authorizer 返回 401(“未授权”)

我们使用 AWS Lambda Authorizer 和 API Gateway 来保护我们的下游 API。

下面是我们基于 Java 的 lambda 授权器的代码片段

  1. 使用正确的令牌(效果 =“允许”):从 API 获得正确的 API 响应

  2. 使用不正确的令牌(效果 =“拒绝”)获取 403 HTTP 响应代码。

我们需要 401(“未经授权”)作为回应,有人可以帮忙怎么做吗?我们有用 java 编写的 lambda 授权器。