问题标签 [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.
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
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 :
就我而言,授权缓存也被禁用
这个问题有什么解决办法吗?
amazon-web-services - 网关 V2 API 的 AWS websocket $connect 路径的返回对象要求是什么
我正在使用 terraform 使用他们的 AWS gatewayv2 资源创建一个 websocket,例如aws_apigatewayv2_route和aws_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 }
对象——这也不起作用。
amazon-web-services - 如何使用 AWS 中 Cognito 用户池的自定义属性授权 API?
我在 AWS API Gateway 中有一个 API。在方法请求中,我在此 API 上的 GET 方法的设置中使用我的自定义 Cognito 授权器作为“授权”。
所以我已经有了通过 Cognito 获取访问令牌的机制。我现在要做的是访问Cognito 用户池中的自定义属性。自定义属性称为 StudentCode。例如,我希望只有代码为“500”的学生有权使用我的 API 的 GET 方法。
我该如何使用 Cognito 执行此操作?我是否需要编写一个 lambda 授权程序,或者可以使用 Cognito/API Gateway/等无代码地完成此操作?
谢谢!
aws-lambda - 无服务器警告:有响应时没有 principalId
尝试将serverless-local-authorizers-plugin集成到使用 AWS Lambda Authorizer 的系统中。当我打印响应时,它确实包含 aprincipalId
并且我在一个对象中返回它,就像在线 lambda 响应一样。为什么我收到错误的任何想法
Serverless: Warning: No principalId in response
?
它是如何返回的:
本地认证代理功能
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。
- 我应该怎么做才能获得自定义授权人的跟踪?
- 我应该怎么做才能跟踪 NLB --> Fargate?
amazon-web-services - AWS lambda 以编程方式设置函数访问策略
我正在尝试使用此示例设置用户特定的 lambda 策略。有人能告诉我为什么这个只访问单个 lambda 的资源规范是错误的吗?
当我使用:
它运行良好(用户对所有 lambda 具有完全访问权限),但是当我尝试将访问限制为仅允许单个 lambda 函数时,当我尝试访问它时,我得到“用户无权访问资源”。我确认该函数是 lambda 的确切名称。
我的代码创建的完整政策声明是:
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 代码:
我已经尝试过的:
- 添加授权方后,我已经重新部署了 API。
- 我正在从邮递员和网络浏览器测试这个,而不是网关测试,因为它会绕过授权者。
aws-lambda - 如何从 AWS Lambda Authorizer 返回 401(“未授权”)
我们使用 AWS Lambda Authorizer 和 API Gateway 来保护我们的下游 API。
下面是我们基于 Java 的 lambda 授权器的代码片段
使用正确的令牌(效果 =“允许”):从 API 获得正确的 API 响应
使用不正确的令牌(效果 =“拒绝”)获取 403 HTTP 响应代码。
我们需要 401(“未经授权”)作为回应,有人可以帮忙怎么做吗?我们有用 java 编写的 lambda 授权器。