如何为 Azure Functions 配置客户特定的 API 密钥

How to configure customer-specific API keys for Azure Functions

我想创建一个带有 http 触发器的 C# Azure 函数。我想用 API Key 来保护它,为每个客户提供一个单独的密钥,并且该函数应该提供特定于客户的数据,因此需要识别调用它的人。

我可以使用 Azure Function API 键来识别客户吗?获取已传递的Key的名称?还是无法在 azure 函数中知道使用哪个密钥对请求进行身份验证?

如果有像 GetApiKeyName() 这样的方法,我可以根据我的数据库中的客户列表检查密钥名称,并根据调用该函数的人 return 不同的数据。例如假设我有一个销售跟踪系统,我的函数是 /api/GetMonthlySales。如果客户 1 使用他们的 API 键调用该函数,他们应该得到他们的月销售额,如果客户 2 调用它,他们会得到不同的金额。

如果这不可能,那意味着我需要向每个客户提供额外的身份验证数据,以便他们传递给每个函数调用,例如客户 ID 和密钥。但这违背了使用 Azure Functions API 键的目的,对吧?

类似的情况是,如果我想在客户调用我的功能时向他们收费。我如何确定哪个客户正在调用我的功能?

罗里,

很遗憾,今天不支持此功能。身份验证将根据使用的密钥进行,您可以 revoke/renew 单独的客户端密钥,但该信息目前未显示在函数中。

有一些解决方法,例如使用管理API映射密钥和匹配请求密钥来识别客户端,但它们很麻烦且效率低下。

我在跟踪这个 here 时遇到了问题,我刚刚再次将其标记为分类,看看我们是否能尽快解决这个问题。

我认为首选方式是使用 Api Management。在 Api 管理中,您可以配置自定义身份验证。

为确保只有 Api 管理层会请求您的函数,请为您的函数应用打开应用服务身份验证/授权,并且只允许 Api 管理层访问它。