首页 > 解决方案 > 如何最好地保护 Azure 函数调用的 Web API?

问题描述

我的任务是创建一个将从服务总线主题触发的 Azure 函数。然后需要该函数将数据写回我们网络内部托管的数据库。我遇到的问题是数据库所在的服务器没有外部 IP。

为了解决这个问题,我将创建一个 Web API,它将驻留在我们的内部网络上,托管在具有外部 IP 的服务器上的 IIS 上。该函数将调用 API,API 将数据写回数据库,没有遇到任何问题。

我现在遇到的最大问题是如何适当地保护 API。我想知道如何最好地做到这一点,因为没有客户端应用程序、前置门户或需要存储的凭据列表。我已经阅读了 Azure AD 身份验证,这对于 Azure 功能来说一切都很好,但是由于 Web API 在 Azure 之外和内部网络上,我不确定这是否是解决方案。我知道 JWT 并已在我为 3rd 方客户端开发的另一个 API 上使用它,其中创建了密钥和帐户,但是是否需要创建一个内部使用的帐户,我不是这么肯定。

任何人都可以让我知道上述问题的正确解决方案吗?我已经阅读了很多关于保护 API 的文档,我变得越来越困惑。

提前感谢任何有任何建议的人:)

标签: asp.net-web-apiazure-active-directoryrestful-authenticationazure-authentication

解决方案


如果情况允许,我多次使用的一种方法是仅根据设置值进行验证。这类似于 Azure Functions 提供的开箱即用功能。视情况而定,您可以将其作为设置(明文)直接存储在功能设置中,也可以使用 KeyVault 安全存储。

这实现起来非常简单,并且通常适用于这些或多或少永久的点对点集成。

或者,编写一个程序来执行该函数的功能,但在本地运行它并避免整个集成需求。添加 jwt/service 主体似乎过多。


推荐阅读