将 REST API URI 中的tenantId 与 JWT 令牌中的值进行比较的最佳方法

Posted

技术标签:

【中文标题】将 REST API URI 中的tenantId 与 JWT 令牌中的值进行比较的最佳方法【英文标题】:Best way to compare tenantId from the REST API URI with the value in JWT token 【发布时间】:2021-11-01 08:01:24 【问题描述】:

在我们的多租户应用程序中,我们的大多数端点都有 /tenants/:tenantId 前缀。在所有这些端点中,我们最终调用了一个方法,将 URI 中的tenantId 与 JWT 令牌中的tenantId 进行比较。

我们正在使用 Cognito、API 网关和 lambda 函数。集中检查而不是从大多数端点调用 checkTenantMatch() 方法的最佳位置是什么?

【问题讨论】:

【参考方案1】:

您可以在 API 网关中实施此类检查(如果可能)以拒绝没有匹配值的早期请求。这将为您节省一些访问您的服务的流量。尽管如此,您的 API 仍应执行此类检查。应该这样做以防止有人设法通过您的网关并直接调用 API 的情况。这也可以防止来自组织内部的任何恶意行为。

您也可以考虑完全从 URL 中删除 tenantId。然后 API 将只从 JWT 中获取值。这样你就可以确保没有人可以滥用它。

【讨论】:

tenantId 更改 API 返回的内容,因此它应该用于 RESTful 和缓存机制

以上是关于将 REST API URI 中的tenantId 与 JWT 令牌中的值进行比较的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

SoapUI,Rest:如何避免在soapui中的REST请求URI中进行参数编码?

如何将搜索条件声明为参数 REST API 方法

C# - REST POST API - 错误 - 无效的 URI:Uri 字符串太长

REST API 404:错误的 URI 或缺少资源?

具有匿名/识别访问的 REST API 的最佳 URI 模式是啥?

如何使用phpunit在具有动态URI的laravel中测试REST api