AWS Cognito JWT 基于属性的路由

Sot*_*eri 6 routes amazon-web-services oauth-2.0 jwt amazon-vpc

我是 AWS 及其服务的新手。我想要实现的是多租户SaaS应用程序。我的概念是这样的:我使用 Cognito 进行用户身份验证。所有用户,无论属于哪个租户,都应该使用一个前端登录。对于租户识别,我使用登录成功时从 JWT 获取的自定义属性“custom:tenant”。对于申请本身,我想使用 VPC,并确保封装,每个租户都应该有自己的 VPC。

例子:

  • 租户 1 的用户 A 登录并获取声明为“custom:tenant”:“1”的 JWT 应路由到 VPC 1
  • 租户 2 登录的用户 B 并返回 JWT,声明为“custom:tenant”:“2”,应路由到 VPC 2

现在我的问题是:如何实现从登录成功到相应VPC的路由?我是否需要更多服务或者在哪里可以找到这些设置?

Gar*_*her 4

有一种标准的基于内容的路由技术,用于根据 JWT 的内容进行路由。此类事物通常由放置在 API 前面的反向代理或 API 网关进行管理,它们运行一些自定义逻辑来读取 JWT 并相应地进行路由。这也使管道保持在应用程序组件之外。

例子

下面是一个用 LUA(一种高级脚本语言)编码的 NGINX 示例,用于读取 JWT 并提取声明。在此示例中,它是一个区域,而在您的情况下,它是一个租户 ID:

先决条件

但并非所有中间件都支持这种类型的路由。例如,您将无法在简单的负载均衡器中做到这一点。一种选择可能是使用NGINX 作为云托管服务,尽管这需要花钱。不过,API 前面的良好网关是一个重要的架构组件,因此请看看您的公司是否认为它值得投资。