【问题标题】:AWS Cognito JWT attribute-based routingAWS Cognito 基于 JWT 属性的路由
【发布时间】:2022-01-08 00:32:26
【问题描述】:

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

例子:

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

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

【问题讨论】:

  • 澄清一下 - 您在不同的 VPC 中创建了 EC2 实例(或自动扩展组),您只需将请求从 FE 路由到适当的后端(在适当的 VPC 中)?
  • 是的,只是根据 jwt 声明路由到适当的 vpc

标签: amazon-web-services oauth-2.0 routes jwt amazon-vpc


【解决方案1】:

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

示例

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

先决条件

虽然不是所有的中间件都支持这种类型的路由。例如,您将无法在简单的负载均衡器中执行此操作。一种选择可能是使用NGINX as a cloud managed service,尽管它会花钱。不过,在 API 之前的良好网关是一个重要的架构组件,因此请看看您的公司是否认为值得投资。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2016-01-23
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2017-07-03
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多