【问题标题】:AWS Cognito + API Gateway, Authorize based on usernameAWS Cognito + API Gateway,根据用户名授权
【发布时间】:2020-12-23 02:33:24
【问题描述】:

我有一个 API Gateway HTTP API。对于某些路线,我附加了一个工作正常的 Cognito 用户池授权器。但是现在我想对授权添加一个限制,以便只有具有正确用户名的用户才能访问某个 API。

例如,如果路由是PUT /users/{username},我只希望具有相应用户名的用户能够编辑他/她的个人资料信息。对于其他用户,应该是未经授权的。

这似乎是一个常见的用例,我该怎么做?我研究了范围,但这似乎不是解决方案。我是否必须为此编写自定义 Lambda 授权方,而不是使用 Cognito 授权方?如果可以,您能否提供一个示例,因为我没有编写 Lambda 授权器的经验。

【问题讨论】:

    标签: amazon-web-services authorization aws-api-gateway amazon-cognito


    【解决方案1】:

    您可以使用映射模板在 API Gateway 中构建请求,并使用存储在 Cognito 令牌中的信息 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference

    对于您对 /users/{username} 的特定请求,您可以使用 if 来仅在用户匹配 How to use IF condition in AWS Api gateway mapping templates. can i use if condition without using foreach? 时提供所需的信息。

    或者,您可以简化 PUT 到 /users 的路径,然后从 cognito 令牌中提取用户名并在映射模板 How can I access the Cognito username of the caller in a Lamda function? 中使用它。

    【讨论】:

      猜你喜欢
      • 2021-08-05
      • 2019-12-22
      • 1970-01-01
      • 2018-12-05
      • 2017-06-26
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多