关于亚马逊网络服务:使用 API Key 或 Authorizer 授权 AWS API Gateway

Authorize AWS API Gateway with either API Key or Authorizer

在 AWS API 网关中,
- 我们可以设置一个资源来要求 API Key 进行访问。
- 我们还可以设置另一个需要授权的资源(例如 JWT 令牌,通过 lambda 函数或 AWS Cognito 处理)。

问题:我们能否将资源配置为在上述两种情况下均可访问?目前,如果我们同时启用"API Key Required"和"Authorization",请求需要API Key和Authorization。我们希望它只通过两者中的一个。

Hack/workaround:创建相同资源的两个副本,并分别授权,一个使用 API Key,另一个使用授权者。


身份验证、识别、授权是相互交织的概念。随着我对 Auth 的了解越来越多,这是我的答案:

  • API Keys 用于项目/应用程序识别和授权
  • JWT 用于用户认证和授权。
  • API Key 在项目/应用程序范围内,JWT 在用户范围内。换句话说,API Key 只识别应用程序,而不是应用程序的用户。

因此,不要使用 JWT 和 API Key 授权同一端点是有意义的,因为它会降低用户和应用程序的治理粒度。但是,如果您的用例需要这种类型的授权,建议的解决方法可能会奏效。


让授权者为你生成/映射 API 密钥

You have a Lambda authorizer return the API key as part of
the authorization response. For more information on the authorization
response, see Output from an Amazon API Gateway Lambda authorizer.

优点:

  • 单端点

  • API 密钥更多的是用于使用计划而不是授权。保持这种状态。

缺点:

  • Authorizer 将在每个请求上运行。哪个花钱