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 将在每个请求上运行。哪个花钱