在我们的多租户应用程序中,我们的大多数端点都以/tenants/:tenantId为前缀。在所有这些端点中,我们最终调用一个方法,将URI中的tenantId与JWT令牌中的tenantId进行比较。
我们正在使用Cognito, API网关和lambda函数。除了从大多数端点调用checkTenantMatch()
方法之外,集中检查此问题的最佳位置是什么?
您可以在API网关中实现这样的检查(如果可能的话),以拒绝没有匹配值的早期请求。这将为您的服务节省一些流量。尽管如此,您的api仍然应该执行这样的检查。这样做是为了防止有人设法越过您的网关并直接调用api。这也可以防止来自组织内部的任何恶意行为。
您也可以考虑从URL中完全删除tenantId
。然后api将从JWT获取值。这样你就可以确保没有人可以滥用它。