如何基于Route在Azure功能中验证租户

问题描述 投票:0回答:2

我正在Azure上开发一个多租户应用程序。该应用程序从IOT中心收集数据,并按租户汇总设备数据。我希望每个租户都能够查看他们设备的摘要。

为了从IOT Hub收集设备数据,我有一个获取设备数据的函数,对其进行汇总并将其存储在Azure Table中,其中PartionKey = tenantId和RowKey = DeviceId。

为了让租户能够查看他们的设备摘要,我有一个HTTP GET触发的Azure功能,其路由指定为:https://. azurewebsites.net/api/tenant/ {tenantId} / deviceSummary tenantId当然绑定到该功能输入参数。

在函数中,我查询Azure表,其中PartionKey = tenantId。

显然,我需要阻止租户使用Get功能访问其他租户的数据。即以某种方式验证租户的路线。

第一个想法是使用tenantId作为键名为每个租户创建一个功能键。然后,在处理请求时,我获取传入的密钥,并使用KeyStore API验证请求中的密钥(代码)是否与路由中的tenantId对应的密钥匹配。

以上是我(无知)如何做到这一点的想法。什么是'正确'的方式?

azure authentication routes azure-functions multi-tenant
2个回答
0
投票

我不确定您可以生成多少个功能键,因此如果您有大量客户/租户可能会出现问题。

函数代理是值得探索的,因为您可以通过代理从函数中提供不同的URL和参数顺序,然后将其转换为函数预期格式。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-proxies

Azure API管理(增加成本)将能够提供网关/外观,允许您具有指向同一Azure功能的不同URL路径/参数。如果这是一个较小的系统,可能比您需要的更多,但值得研究。它还将提供一些其他好处(操作IP过滤,策略,计量等)


0
投票

我相信您正在寻找的“正确”方式是Azure App Service Authentication或EasyAuth。 Azure Functions与Azure App Services构建在相同的底层核心组件上,因此您可以使用相同的身份验证机制。

我将参考此blog post on Azure Functions and App Service Authentication和Azure应用程序服务文档中的安全部分:Authentication and Authorization documentation

© www.soinside.com 2019 - 2024. All rights reserved.