我们将 APIM 实例部署为外部,但可以访问部署在 VNET 中的后端服务。这些服务只能从该 VNET 内访问。
现在,我们尝试使用 Swagger 文件的 URL(例如:http://internalIP/swagger/v1/swagger.json)使用 OpenAPI 规范添加新的 API。我们首先收到一条通知,指出 swagger 文件的 URL 应公开可用,并在弹出窗口中显示:请指定有效的 OpenAPI 规范文件。
我们实际上在本地生成了 swagger 文件,并通过选择文件将其上传到规范,并且它起作用了。所以 json 是有效的。当我们输入文件的 URL 时,它不起作用,正如我所说,该文件不公开。
我们可以使用内部 URL 添加 OpenAPI 规范吗?
非常感谢和问候,
P
我们遇到了同样的问题,据我正确理解,获取开放 api 规范文件的请求是通过(共享/公共)azure 服务完成的,该服务的 IP 地址与您的 api 管理服务不同。
背景
在我们的示例中,我们将文件托管在 Blob 存储上(具有匿名访问权限),并且我们希望将此存储帐户的访问限制为 api 管理服务所在的虚拟网络。如上所述,这是行不通的。
我们如何调试问题
我们在存储帐户的日志中发现请求是从不同的 IP 地址发出的。为此,我们执行了以下操作:
CallerIpAddress
添加到查询列可能的解决方法
将 Azure 服务 IP 添加到存储帐户的白名单中。虽然这是一个风险,但如果文件不那么敏感,这可能是一个选择。