Azure 应用服务>网络>访问限制和处理来自 API 管理的 308 重定向

Posted

技术标签:

【中文标题】Azure 应用服务>网络>访问限制和处理来自 API 管理的 308 重定向【英文标题】:Azure AppService>Networking>Access Restrictions & handling 308 redirects from API Management 【发布时间】:2021-05-30 07:17:09 【问题描述】:

只是想看看是否有任何 Azure 应用服务或 APIM 专家可以帮助我克服在 将我的应用服务端点的访问限制为我的 Azure API 的 IP 地址时让我感到困惑的事情管理服务。我可以在“允许”规则中成功设置 APIM 的 IP 地址,在网络选项卡的“访问限制”部分,在我定位的应用程序服务中。但是会发生什么,APIM 将我的浏览器重定向到使用其自己的 IP 地址访问应用服务端点,当然我只是将其设置为仅允许从 APIM IP 地址访问。

一个 308 Moved Permanently http 代码被传送到我的浏览器,我的浏览器被发送到应用服务页面。我遇到了 403 受限错误,因为确实是我的 IP 地址正在访问应用程序服务。我期望被重定向到我想要的应用程序服务,并被允许访问,因为它是从我的 APIM 的“允许”IP 地址传递的。我是否需要通过 APIM 策略或目标应用服务内的某种网络策略以某种方式对此进行调整?

当我尝试从 APIM 端点访问应用程序时,我的重定向会导致网络应用程序限制我的 IP 地址

任何想法都会非常有帮助

【问题讨论】:

【参考方案1】:

APIM 从不单独回复重定向,所以我假设您的后端会这样做。默认情况下,无论状态码如何,APIM 都会将后端 http 响应传递给客户端。但是您可以使用策略来决定如何处理响应。对于重定向,forward-request 策略上有一个选项 follow-redirects 可以满足您的需要。

【讨论】:

感谢您的回复。【参考方案2】:

如果您将客户端重定向到直接访问您的应用服务,则不能对您的应用服务设置 IP 限制。应用服务对来自 APIM 的重定向一无所知(因此您希望允许它)。此外,如果您放入 308 重定向,下次客户端可能(基于其缓存)直接访问应用服务,而无需再次访问 APIM。

所以:您在这里尝试的方法不起作用 - 也没有太大意义。如果您希望所有客户端都通过 APIM,请在 APIM 中转发请求,而不是重定向客户端。

【讨论】:

非常感谢您的回复,您能否详细说明最后一部分?我在想在 APIM API 操作(API 管理服务的端点处理程序)中设置 backend-service-url 会做你描述的事情,在 APIM 中转发请求。除了设置后端服务,我还需要在操作策略的“后端”部分应用“转发请求”策略吗?或者,我是否需要针对我的目标是识别请求来自 APIM,而不是客户端浏览器 IP 的后端服务 URL 执行全新的“发送请求”策略? @AzureGuy422 请在您的帖子中发布您的政策定义中的相关部分 我实际上还没有创建策略定义。我的想法是,在 Azure APIM 内的 API 操作中将端点设置为“后端服务”会命中该端点,同时仍将客户端保持在主机端点“xxxx.azure-apim.net/xx”

以上是关于Azure 应用服务>网络>访问限制和处理来自 API 管理的 308 重定向的主要内容,如果未能解决你的问题,请参考以下文章

将Azure SQL Server的访问权限限制为特定的azure Web应用程序

Azure 网站 IP 限制

限制从 Azure 函数子网访问存储帐户

Azure Front Door、应用服务访问限制和 AD 身份验证

Azure 媒体服务共享访问策略限制

应用之间的 Azure Web 应用访问限制