azure - 将 Azure 应用程序网关与 Azure API 管理服务结合使用时访问 Azure API 开发人员门户时出现错误

标签 azure azure-api-management azure-application-gateway

我们使用本指南在 Azure 中配置了以下设置 ( https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/apis/protect-apis )

具有公共(public) IP 调用的应用程序网关 ===> 在内部模式(开发层)中配置的 Azure APIM 服务

详细信息:

  1. 应用网关和 APIM 位于同一 VNet 中,但位于不同的子网中。
  2. 应用程序网关仅具有禁用防火墙的公共(public) IP(用于测试目的)。
  3. APIM 在内部模式下配置。
  4. 使用自定义域和 SSL 证书在应用程序网关中配置三个监听器(一个用于 API,一个用于开发者门户,一个用于 API 管理端点)。
  5. 在同一 VNet 中部署并配置了虚拟机。

APP网关域是:(可访问互联网)

  • dev.apiportal.xxxx.com ==> API 门户
  • dev.api.xxxx.com ==> API 网关
  • dev.apimanagement.xxxx.com ==> API 管理

APIM 服务正在使用默认域:(无法在互联网上访问。APIM 在内部模式下配置)

  • dev-apim.developer.azure-api.net ==> API 门户
  • dev-apim.azure-api.net ==> API 网关
  • dev-apim.management.azure-api.net ==> API 管理

在 App GW 上为上述端点定义的探针是健康的并且处于绿色状态

问题陈述:

  1. 可以使用默认链接从上面 #5 中提到的虚拟机访问 API 门户。我可以使用门户中添加的用户登录。 VM 的主机文件已修改为 APIM 服务的 IP 地址和默认主机名。从虚拟机访问时门户工作正常。
  2. 当我尝试使用自定义域(在 App GW 的第 4 条中提到的监听器上配置)从互联网访问门户时,门户加载正常。
  3. 当我尝试使用同一用户(在 #1 中提到)登录时不起作用,并且收到的错误是“请提供有效的电子邮件和密码”。单击登录按钮后大约 15-20 秒后会出现此错误。
  4. 当我尝试检查浏览器开发人员工具中的错误时,发现即使使用面向互联网的 URL 访问门户,管理 Api 的一个请求也会指向 Api 管理的内部 URL。 Screenshot attached .

想了解我们是否还需要 APIM 服务的自定义域才能使此设置正常工作?有修复此错误的指针吗?

最佳答案

• 感谢@Pankaj Kapare提出的问题以及您在评论部分提供的后续解决方案。我精心发布了与您相同的评论以及一些其他可能的解决方案作为答案。

使用应用程序网关中提到的自定义域设置 APIM 服务的 UR,同时 APIM 服务仍以内部模式运行有助于成功登录 APIM 开发人员门户,即设置相同的自定义域在 APIM 端点的应用程序网关中定义

• 您还可以通过为应用程序网关中配置的自定义域创建 CNAME 记录并在 APIM 服务中提及默认域 URL 的别名来解决此 DNS 映射问题。因此,通过为 APIM 服务中的默认域创建 CNAME DNS 记录,您可以将对应用程序网关的自定义域 URL 的请求重定向到 APIM 服务中的默认域 URL。

但为此,您还需要在 Azure 中创建一个私有(private) DNS 区域并在其中创建上述内容,这将限制对 APIM URL 的互联网访问并在内部重定向请求。

关于azure - 将 Azure 应用程序网关与 Azure API 管理服务结合使用时访问 Azure API 开发人员门户时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71918109/

相关文章:

java - Azure SDK for Java - 引发 InvalidKeyException 的示例程序

消费定价中的 Azure API 管理服务分析

Azure 应用程序网关重定向 http 而不是 https 进行后端重定向

azure - 如何配置【Azure】应用网关支持多种App服务?

azure - 使用 Azure 应用程序网关修改/截断基于路径的路由中的路径

azure 数据工厂从容器递归复制

javascript - 阻止在 Azure 中查看网站代码

azure - 在 Azure DevOps 中设置/更改默认组织

azure - 如何使用无服务器为 Azure Functions 指定自定义域和证书?

azure - 无法使用 Azure Function App 创建 API