Azure API Powershell



我正在为我的网站设置自动部署管道,作为其中的一部分,我必须使用 VSTS RM 自动导入 API。我已经在 VSTS 任务中使用自定义 PS 脚本实现了这一目标。我使用招摇的网址导入

Import-AzureRmApiManagementApi –Context $apimContext –SpecificationFormat 'swagger' –SpecificationUrl 'http://mywebapp.com/swagger/docs/v1' –Path 'apis'

为了提高安全性,我们实施了重定向由客户端证书保护的http请求https。问题来了。

现在我们不能使用上面的命令来导入,该命令返回 403 禁止错误,因为 API 管理器没有绕过证书验证的选项。 可以做些什么来解决这个问题?

即使我尝试使用特定证书调用 webrequest 网址,并导入在本地机器中运行良好的 API。

$swaggerurl="https://mywebapp.org/swagger/docs/1" $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("xyz.cer") $test=Invoke-WebRequest -Uri "$swaggerurl" -Certificate $cert $test.状态码

Import-AzureRmApiManagementApi –Context $apimContext –SpecificationFormat 'swagger' –SpecificationUrl 'http://mywebapp.com/swagger/docs/v1' –Path 'apis'

但不是在 VSTS 内联电源外壳中。它不接受证书值并返回 403 禁止错误。

请让我知道如何解决这个问题?

问题:

1.由于 https 客户端证书验证,无法导入到 API 管理器。

    VSTS 内联电源外壳
  1. 不接受证书参数详细信息,即使我使用正确的证书。 同样的情况适用于本地计算机。 VSTS 内联电源外壳是否有任何限制。

提前谢谢。

改用Azure PowerShell step/task。(包括在"部署"类别中)

为此,API 管理服务需要代表你向 URL 发出 WebRequest,并在请求中使用客户端证书。 我们目前不提供使用客户端证书调用 Import-AzureRmApiManagementAPI 的选项。

唯一可用的选项是使用 Powershell (Invoke-RestMethod) 创建 WebRequest,将 swagger 下载到本地文件并使用cmdlet 中的 -SpecificationPath参数

此问题已通过将专用代理更改为以管理员帐户身份运行得到解决。现在一切都按预期工作:)

使用 VSTS 专用代理导入 API

最新更新