0

我正在研究使用WCF WebApi Preview 6构建的REST API。这适用于多租户应用程序并由不同的客户端(Web 和移动应用程序)使用。

此 API 上的某些资源需要身份验证才能访问或操作它们。这些端点的 API 信息由客户端使用加密令牌提供,其中包含有关设备、用户、租户等的加密信息。

我创建了一个压力测试,它实际上揭示了租户之间的数据泄漏。我将解释一个具体的例子和工作流程,所以你有一个更好的主意。

客户端设备中的用户使用 API 进行身份验证并获取令牌。稍后,设备将资源发布到需要安全令牌才能运行的端点。令牌验证发生在MessageHandler中,它确保一切正常,然后将瞬态信息放入HttpCurrent.Items中,以便其余请求可用。

我们使用HttpContext.Current.Items是因为我们确定它的范围是请求,所以稍后在处理请求时,我可以参考正确的租户并在那里插入信息。

我们不确定发生了什么,但根据 HttpContext.Current.Items 中的信息,一些数据被路由到了错误的租户。

这怎么可能发生?

HttpContext.Current.Items 中的信息是否在请求完成之前被踩到?处理数据的过程实际上是在请求之外吗?

4

0 回答 0