AWS Cognito JWT 基于属性的路由
AWS Cognito JWT attribute-based routing
我是 AWS 及其服务的新手。我想要实现的是一个多租户 SaaS 应用程序。我的概念是什么样的:
我使用 Cognito 进行用户身份验证。所有用户,无论他们属于哪个租户,都应该使用一个前端登录。对于租户识别,我使用了一个自定义属性“custom:tenant”,这是我在登录成功时从 JWT 获得的。
对于申请本身,我想使用 VPC 并确保封装,每个租户都应该有自己的 VPC。
示例:
- 租户 1 的用户 A 登录并取回声明为“custom:tenant”的 JWT:“1”应该路由到 VPC 1
- 租户 2 的用户 B 登录并取回声明为“custom:tenant”的 JWT:“2”应该路由到 VPC 2
现在我的问题是:如何实现从登录成功到相应VPC的路由?我需要进一步的服务吗?或者我在哪里可以找到这些设置?
有一种标准的基于内容的路由技术,用于基于 JWT 内容的路由。这种类型的东西通常由位于 APIs 前面的反向代理或 API 网关管理,它运行一些自定义逻辑来读取 JWT 并相应地进行路由。这也使管道在应用程序组件之外。
示例
这是一个使用高级脚本语言 LUA 编码的 NGINX 示例,用于读取 JWT 并提取声明。在此示例中,它是一个区域,而在您的情况下,它是一个租户 ID:
先决条件
虽然不是所有的中间件都支持这种类型的路由。例如,您将无法在简单的负载均衡器中做到这一点。一种选择可能是使用 NGINX as a cloud managed service,尽管它会花钱。 APIs 前面的一个好的网关是一个重要的架构组件,所以看看你的公司是否觉得它值得投资。
我是 AWS 及其服务的新手。我想要实现的是一个多租户 SaaS 应用程序。我的概念是什么样的: 我使用 Cognito 进行用户身份验证。所有用户,无论他们属于哪个租户,都应该使用一个前端登录。对于租户识别,我使用了一个自定义属性“custom:tenant”,这是我在登录成功时从 JWT 获得的。 对于申请本身,我想使用 VPC 并确保封装,每个租户都应该有自己的 VPC。
示例:
- 租户 1 的用户 A 登录并取回声明为“custom:tenant”的 JWT:“1”应该路由到 VPC 1
- 租户 2 的用户 B 登录并取回声明为“custom:tenant”的 JWT:“2”应该路由到 VPC 2
现在我的问题是:如何实现从登录成功到相应VPC的路由?我需要进一步的服务吗?或者我在哪里可以找到这些设置?
有一种标准的基于内容的路由技术,用于基于 JWT 内容的路由。这种类型的东西通常由位于 APIs 前面的反向代理或 API 网关管理,它运行一些自定义逻辑来读取 JWT 并相应地进行路由。这也使管道在应用程序组件之外。
示例
这是一个使用高级脚本语言 LUA 编码的 NGINX 示例,用于读取 JWT 并提取声明。在此示例中,它是一个区域,而在您的情况下,它是一个租户 ID:
先决条件
虽然不是所有的中间件都支持这种类型的路由。例如,您将无法在简单的负载均衡器中做到这一点。一种选择可能是使用 NGINX as a cloud managed service,尽管它会花钱。 APIs 前面的一个好的网关是一个重要的架构组件,所以看看你的公司是否觉得它值得投资。