首页 > 解决方案 > 如何基于路由在 Azure Function 中对租户进行身份验证

问题描述

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

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

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

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

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

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

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

标签: azureauthenticationroutesazure-functionsmulti-tenant

解决方案


我相信您正在寻找的“正确”方式是Azure App Service AuthenticationEasyAuthAzure Functions构建在与Azure 应用服务相同的基础核心组件之上,因此你可以使用相同的身份验证机制。

我会参考这篇关于 Azure Functions 和应用服务身份验证的博文,以及 Azure 应用服务文档中的安全部分:身份验证和授权文档


推荐阅读