如何使用Powershell在Azure API管理中禁用订阅密钥

时间:2019-05-10 16:30:50

标签: azure powershell azure-api-management

我们正在使用Azure API管理和Powershell通过脚本在门户上导入配置,但是,每当导入API时,都会启用来自门户的“需要订阅”检查(“ API必需订阅密钥”)。到目前为止,我们尚未在API上使用订阅功能,因此导入时需要禁用此功能。我们将Import-AzApiManagementApiSet-AzApiManagementApi用于以下代码:

Set-AzApiManagementApi -ApiId $apiId -Context $context -Protocols @('https') -ServiceUrl $serviceBase$path -Name $api.Name
Set-AzApiManagementPolicy -Context $context -ApiId $apiId -PolicyFilePath "$pwd/src/private/security_policy.xml"

documentation中,如果没有进行此检查,就找不到导入API的方法。是否有任何脚本可以通过Powershell禁用此功能?

3 个答案:

答案 0 :(得分:1)

对此的快速补充。下面的 Powershell 命令会将 API 的 Subscription Required 属性设置为 false。不过有一句警告:这目前不适用于 Azure DevOps 管道。管道将声明任务成功运行,如果您在管道中运行 $api 的回显,它将显示该 api 具有 SubscriptionRequired : False。但是,如果你去检查 Azure 中的 api,它仍然会设置为 True(默认行为)。

# get context
$apimContext = New-AzApiManagementContext -ResourceGroupName "targetResourceGroup" -ServiceName "targetApimInstance"
$api = Get-AzApiManagementApi -Context $apimContext -Name "Name of Api"

# set subscriptionRequired to false
$api.SubscriptionRequired=$false

答案 1 :(得分:0)

答案 2 :(得分:0)

我无法按照 https://stackoverflow.com/a/56095090/240586 的建议使用 Set-AzApiManagementApi 在导入的 API 上将 SubscriptionRequired 更改为 false。由于 SubscriptionRequired 是一个开关参数,我无法将其指定为 false。

不过,https://stackoverflow.com/a/66675277/240586 的变体是有效的。 @RomericRobo 的回答缺少保存更改的最终 Set-AzApiManagementApi 命令(抱歉,我无法编辑或评论他的回答)。我完整的工作解决方案是:

.auth-page {
  padding-top: 10vh;
  height: 100vh;
  background-image: url(../assets/img/full-screen-image-5.jpg);
  background-color: #cccccc;
}