Security API网关的可选授权

Security API网关的可选授权,security,aws-lambda,aws-api-gateway,amazon-cognito,Security,Aws Lambda,Aws Api Gateway,Amazon Cognito,我正在通过API网关构建一个由lambda提供服务的API。我已经为一些管理端点集成了Cognito用户池授权器,它可以阻止未授权的请求,但是现在我想添加一些端点,这些端点可以由经过身份验证和未经身份验证的用户调用(并根据授权返回不同的数据)。例如,您可以想象,GET/users仅在请求未经身份验证时返回用户的基本配置文件信息,如果请求未经身份验证,则返回更多详细信息 使用API网关设置此功能的最佳方法是什么?选项1(首选) 请有两个不同的端点 带有GET的API X(Lambda用户作为后端,

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

使用API网关设置此功能的最佳方法是什么?

选项1(首选) 请有两个不同的端点

  • 带有GET的API X(Lambda用户作为后端,Cognito作为授权者)

  • 带GET的API Y(Lambda用户作为后端,不带Cognito)

  • Lambda用户需要验证,以查看应根据标头“授权”返回的响应。如果“授权”,则返回更多详细信息,否则,返回最少的详细信息

  • 选项2 请有一个端点

  • 带GET的API X(Lambda用户作为后端,不带Cognito)

  • Lambda用户需要验证,以查看应根据标头“授权”返回的响应。如果“授权”,则返回更多详细信息,否则,返回最少的详细信息


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

    使用Cognito时,您可以选择以下选项

    1) 认知授权

    2) Lambda授权: 使用Lambda函数的优点是,它可以执行授权处理,而不是IdToken验证。例如,您可以根据应用程序编写处理,例如IP限制和只允许特定的用户代理

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