【问题标题】:Specifying User Access Control with Amazon Cognito使用 Amazon Cognito 指定用户访问控制
【发布时间】:2021-05-29 06:24:02
【问题描述】:

处理 Amazon Cognito 的问题。到目前为止,我已经做到了,例如,要访问我的 API 端点,您需要在标头中添加一个授权令牌

curl --location --request 
PUT 'https://endpoint.execute-api.<region>.amazonaws.com/dev/users/<user_Id>/<item_id>' \
--header 'authorizationToken: bearer token'

我想不通的是如何使它更细粒度,因为使用这种方法,如果你有 user_id: X 的用户和另一个用户可以说 user_id: 是 用户 X 可以与用户 Y 使用相同的资源,反之亦然。所以假设用户 X 将此请求发送到我的端点

curl --location --request 
PUT 'https://endpoint.execute-api.<region>.amazonaws.com/dev/users/X/ITEM1' \
--header 'authorizationToken: bearer token'

用户 Y 可以发送相同的请求

curl --location --request 
PUT 'https://endpoint.execute-api.<region>.amazonaws.com/dev/users/X/ITEM1' \
--header 'authorizationToken: bearer token'

并弄乱用户 X 的数据。那么如何配置 cognito 以返回只允许用户 X 与他/她的项目交互而用户 Y 与他/她的项目而不是用户 X 的项目交互的不记名令牌。

【问题讨论】:

    标签: amazon-web-services security authentication authorization amazon-cognito


    【解决方案1】:

    如果您想控制对 AWS 服务(S3 等)的直接访问,您可以使用 Cognito 身份池,它可以帮助您分配身份并通过标准 IAM 控制访问。

    如果我理解正确,您想要控制访问的资源是您自己的 API。在这种情况下,您必须自己管理,您的 API 必须通过从令牌(和 Cognito 的 userInfo 端点)获取身份来检查权限(防止垂直和水平权限升级),并允许或拒绝基于每个请求的访问根据您的规则,与传统的非 Cognito 应用程序或 API 没有什么不同。

    Cognito 可以添加的是您可以为您的用户存储自定义属性(声明),您可以从 Cognito 获取这些属性并用于授权决策。

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 2019-08-18
      • 1970-01-01
      • 2015-02-19
      • 2016-10-15
      • 2018-03-24
      • 2016-10-23
      • 2017-12-22
      • 2016-12-08
      相关资源
      最近更新 更多