使用合并数据处理多租户 api 中的身份验证的最佳方式

Best way to handle auth in multi tenant api with pooled data

我是 AWS 的新手,我正在使用 API 网关、lambda 和 dynamodb 创建多租户 API。我想确保每个租户只能访问自己的数据。我将根据我生成和分配的 orgId(租户 ID)对 dynamodb table 数据进行分区。现在我有基本的 API keys/usage 计划设置 API 网关,但我无法弄清楚如何最好地确定哪个租户称为 api 基于api 他们使用的密钥。我是否应该从请求 header 中检索 api 键并使用它来找到正确的 orgId 来分区数据?或者有其他更好的方法来处理这种情况吗?

处理租户隔离的更好方法是使用特定于给定租户的 Lambda 授权方 + IAM 策略 aws blog article

这就是我处理身份验证和隔离的方式(这里我将授权和身份验证委托给 auth0)。

  1. 从 auth0 生成 jwt 身份验证令牌。
  2. 使用 lambda 授权方。
  3. lambda 授权方将根据 aut0 api 验证 jwt 令牌。该授权码将由您的授权人处理。
  4. 基于 jwt 令牌,如果它通过,它将生成一个允许 iam 策略,如果它是伪造的或不正确的令牌,它将生成拒绝 iam 策略。

注意:- lambda 授权方将在 api 网关对实际 lambda 的每次请求之前被调用。 您还可以缓存授权方的响应以降低成本。

对于租户 ID,授权方会将令牌传递给您在 header 内的后端代码,称为授权,您可以使用她的库对其进行解码,并提取 jwt 令牌中存在的子声明,该令牌将充当 dynamodb/user.

如果您需要有关授权方代码的帮助,请告诉我。