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

Ror*_*ory 8 c# azure azure-webjobs azure-functions

我想用http触发器创建一个C#Azure函数.我希望使用API密钥来保护它,为每个客户提供单独的密钥,并且该功能应该提供客户特定的数据,因此需要确定谁在调用它.

我可以使用Azure功能API密钥来识别客户,例如获取已传递的密钥的名称吗?或者是否无法在azure函数中知道哪个密钥用于验证请求?

如果有一种方法,GetApiKeyName()我可以根据我的数据库中的客户列表检查密钥名称,并根据谁调用该函数返回不同的数据.想象一下,我有一个销售跟踪系统,我的功能是/api/GetMonthlySales.如果客户1使用他们的API密钥调用该功能,他们应该获得他们的月销售额,如果客户2调用它,他们将获得不同的金额.

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

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

Fab*_*nte 7

罗里,

遗憾的是,今天不支持这种情况.验证将基于使用的密钥进行,您可以撤消/更新单个客户端密钥,但该信息当前不会显示给功能.

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

我在这里跟踪过这个问题,我刚刚再次将其标记为分类,看看我们是否可以尽快解决这个问题.