API网关的可选授权

问题描述 投票:0回答:2

我正在通过API网关构建由lambda服务的API。我已经与用于某些管理端点的Cognito用户池授权者集成在一起,该阻止者阻止了未经授权的请求,但是现在我想添加一些可由身份验证和未经身份验证的用户调用的端点(并根据授权返回不同的数据)。例如,您可以想象GET /users仅在请求未通过身份验证时返回用户的基本配置文件信息,而在请求未通过身份验证时返回更多详细信息。

使用API​​网关进行设置的最佳方法是什么?

security aws-lambda aws-api-gateway amazon-cognito
2个回答
0
投票

选项1(首选)

请具有2个不同的端点

  1. 具有GET https://api.xyz.com/users的API X(Lambda用户作为后端,而Cognito作为授权者)

  2. 具有GET https://api.xyz.com/public/users的API Y(Lambda用户作为后端,并且没有Cognito)

  3. Lambda用户需要验证以查看应基于标题“授权”返回什么响应。如果为“已授权”,则返回更多详细信息,否则,返回最少详细信息。

选项#2

请具有1个端点

  1. 具有GET https://api.xyz.com/users的API X(Lambda用户作为没有Cognito的后端)

  2. Lambda用户需要验证以查看应基于标题“授权”返回什么响应。如果为“已授权”,则返回更多详细信息,否则,返回最少详细信息。

之所以选择第一个,是因为从长远来看,我们可以在整个系统中分别拥有一组公共API。对于所有消费者来说也很清楚。易于开发和维护。


0
投票

使用Cognito时,您有以下可能的选项

1)Cognito授权

2)Lambda授权:使用Lambda函数的优势在于,它可以执行除IdToken验证以外的授权处理。例如,您可以根据您的应用程序编写处理,例如IP限制并仅允许特定的用户代理。

3)在您的代码内部编写过滤器以拦截每个请求和响应,并管理您自己基于角色的授权并根据需要返回响应。

© www.soinside.com 2019 - 2024. All rights reserved.