当前位置: 首页 > 知识库问答 >
问题:

如何通过Cognito用户id限制访问AWS API网关endpoint

洪开诚
2023-03-14

我试图通过使用AWS Cognito、Api-Gateway和Lambda来实现电子商务应用程序后端。

要创建新项目,用户必须登录。创建项目后,记录的用户将成为项目的创建者。我已经创建了一个Item createendpoint,并为Apigatewayendpoint添加了Cognito JWT授权程序。

现在我需要实现项目更新终结点。相关的项目更新必须只允许项目的创建者使用。API可能是这样的。

/items/{item-id} PUT
body : { title, price... }
header { Authorization: Cognito-JWT-Token }

使用AWS生态系统实现此类功能的最佳方式是什么。或任何实现此类功能的最佳实践。

共有1个答案

唐阳晖
2023-03-14

你会为每个用户ID项创建一个属性owner。通常你会使用唯一ID标记的sub声明。但是,出于各种原因,我不建议在cognito中使用subject值。如果有人删除了他们的帐户,并用同一封电子邮件创建了一个新帐户,你可以使用电子邮件来确保安全措施到位。

无论您选择什么,在处理程序中,将所有者与已验证的令牌声明进行比较。如果匹配就允许,如果不匹配就不允许。

 类似资料:
  • 我正在尝试将AWS Cognito(用户池)和AWS DynamoDB用于我的移动应用程序。 我做了以下工作: 在AWS Cognito上创建用户池。 在AWS Cognito上创建身份池,并将用户池ID、应用客户端ID设置为身份验证提供商上的Cognito。 在AWS DynamoDB上创建SampleTable. 设置权限验证角色以访问AWS IAM上的SampleTable。 我创建了以下代

  • 通过使用“拒绝”策略并将其附加到具有身份池的角色,是否可以使用Cognito创建特定于用户的权限? 我有一个API,我想限制我的用户池中特定用户对某些endpoint的访问。我创建了以下策略: 然后,我将此策略附加到一个网络身份角色,并将此角色分配给我的用户池中的一个组。我将Cognito提供的身份令牌传递给Cognito授权程序,不幸的是,即使是该组中的用户也可以访问终结点。 有没有一种方法可以

  • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

  • 我使用Cognito用户池来保护我的API网关。现在我想使用邮递员向我的应用编程接口发出请求,但是我需要传递授权令牌,因为应用编程接口是安全的。是否有任何AWS CLI命令或REST API来生成授权令牌(通过传递用户名/密码)?我已经搜索了留档,但找不到任何例子。谢谢你的帮助。

  • 我有一个使用Cognito用户池授权器的方法。我想从上下文中获取主体Id,并通过自定义头传递给集成endpoint。我试过语境。授权人。一无所有的原则。i、 e标题没有显示。如果我设置为“硬编码”,它将显示。其他上下文选项,比如appId,似乎是Cognito特有的。 本质上,我试图让API网关处理工作中的令牌验证部分。

  • 我已经为在某些条件下限制Crashlytics网络使用的能力不足而工作了一段时间。例如,漫游、计费网络等。。 根据SDK留档,我发现只有两个选项可以解决这个问题: > 发送崩溃报告之前的内置用户同意对话框 这个API非常有限,因为: > 不初始化Crashlytics不仅可以阻止网络访问,还可以防止Crashlytics将崩溃报告保存在本地以便最终发送事件的任何机会。更不用说在运行时没有选择退出的