我在Azure中部署了多个Web API而未应用身份验证,因此任何人都可以访问Internet,从而可以访问Web API。
现在我想对Web API应用身份验证,而不是在不同的Web API中实现相同的身份验证逻辑,我发现Azure API网关(API管理)是一种潜在的解决方案。通过Azure API管理文档,我了解到我可以应用validate-jwt
之类的策略来验证对后端Web API的请求。但是,后端Web API的端点仍可供用户使用。那么,我该如何隐藏它们呢?通过定义子网络或Azure API管理有这个功能吗?
答案 0 :(得分:4)
答案 1 :(得分:1)
Microsoft的解决方案:How to secure back-end services using client certificate authentication in Azure API Management
使用这种方法,任何在没有所需证书的情况下访问后端服务的尝试都将导致403 - Forbidden
响应。
与使用受信任的CA签名证书($$)相比,可以使用自签名证书。我选择实现一个Azure Key Vault,在其中生成一个新证书,将其下载为* .PFX文件,然后按照本文中的描述将其上传到我的API管理实例中。
答案 2 :(得分:0)
Azure API管理无法修改您的后端服务。它的作用仅限于代理。
您必须对每个Web API应用身份验证,或将防火墙配置为仅接受来自Azure APIM的请求。
答案 3 :(得分:0)
或者您可以使用:
保护Azure API管理服务与后端服务的通信。
答案 4 :(得分:0)
了解如何在Azure API Management上设置TLS,以便与后端API的所有连接都必须通过API代理。
答案 5 :(得分:0)
这是@ PramodValavala-MSFT的回答
https://github.com/MicrosoftDocs/azure-docs/issues/26312#issuecomment-470105156
以下是选项:
p.s。就我而言,我想要IP限制,因为它允许将所有身份验证保留在API管理网关上。