14

我在 Azure 中部署了多个 Web API,但没有应用身份验证,因此任何可以访问 Internet 的人都可以访问 Web API。

现在我想对 Web API 应用身份验证,而不是在不同的 Web API 中实现相同的身份验证逻辑,我发现 Azure API 网关(API 管理)是一个潜在的解决方案。

通过 Azure API 管理文档,我了解到我可以应用策略,例如validate-jwt对后端 Web API 的请求进行身份验证。但是,用户仍然可以使用后端 Web API 的端点。

那么,我应该如何隐藏它们呢?我必须定义一个子网络还是 Azure API 管理有这方面的功能?

4

7 回答 7

8

最近我也遇到了同样的问题。最后我通过使用“IP Restrictions”功能找到了解决方案。请参阅以下步骤:

1) 转到 Azure 门户中的 API 管理概览页面,复制 VIP。 API 管理概览页面

2) 在您的 Web APP > 网络中 联网

3) 粘贴在您的 VIP 中 粘贴vip

于 2018-07-09T03:04:11.197 回答
6

Microsoft 的解决方案:如何在 Azure API 管理中使用客户端证书身份验证来保护后端服务

使用这种方法,任何在没有所需证书的情况下访问后端服务的尝试都将导致403 - Forbidden响应。

您可以使用自签名证书,而不是使用受信任的 CA 签名证书 ($$)。我选择实现一个 Azure Key Vault,我在其中生成了一个新证书,将其下载为 *.PFX 文件,并将其上传到我的 API 管理实例中,如本文所述。

于 2018-07-12T16:01:55.187 回答
5

这是来自@PramodValavala-MSFT 的答案
https://github.com/MicrosoftDocs/azure-docs/issues/26312#issuecomment-470105156

以下是选项:

ps 在我的情况下,我想要 IP 限制,因为它允许将所有身份验证保留在 API 管理网关上。

于 2019-03-07T10:17:19.883 回答
1

或者你可以使用:

  1. 基本认证
  2. 相互证书认证
  3. VPN

保护 Azure API 管理服务与后端服务的通信。

于 2016-04-23T17:51:40.030 回答
1

查看在 Azure API 管理上设置 TLS,以便与后端 API 的所有连接都必须通过 API 代理。

于 2017-01-12T19:31:43.783 回答
0

您的后端应用是 Azure 函数应用还是应用服务应用?

如果是这样,托管身份可能是限制访问的最简单方法。无需在 API 管理中存储客户端机密/证书 + 不像 IP 白名单方法那样不稳定。

  1. 为函数应用创建 Azure Active Directory 应用程序。
  2. 在 Function App 上启用 Authentication/Authorization 模块并引用步骤 1 中的 AAD 应用程序。
  3. 在 APIM 实例上启用托管标识。
  4. <authentication-managed-identity>策略添加到 APIM 并引用步骤 1 中的 AAD 应用程序。

我在使用 Terraform 将 Azure 函数限制为 API 管理中更详细地介绍了这种方法

参考:

于 2021-01-15T01:23:43.910 回答
0

Azure API 管理无法修改您的后端服务。它的作用仅限于代理。

您必须对每个 Web API 应用身份验证或将防火墙配置为仅接受来自 Azure APIM 的请求。

于 2016-04-21T17:44:33.157 回答