从订阅密钥确定产品?

时间:2021-01-27 12:01:44

标签: azure azure-api-management

我发现自己在继承的项目中有订阅密钥,我需要确定该密钥附加到的产品。我们有几百种产品,手动检查每个产品并“显示”其每个订阅密钥的值不是我想做的事情......有没有办法编写脚本?到目前为止,我的谷歌搜索只揭示了从已知产品获取密钥的解决方案,这与我需要的相反......

2 个答案:

答案 0 :(得分:0)

订阅密钥不是唯一的,因此您无法使用订阅密钥获取产品,因为来自不同服务的许多产品可能都有持有相同订阅密钥的订阅,因此没有这样的 api 来执行此操作。

一般情况下,你可以使用list product subscription api和list secrets api编写脚本来实现这样的事情。

https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/productsubscriptions/list#code-try-0

https://docs.microsoft.com/en-us/rest/api/apimanagement/2019-12-01/subscription/listsecrets#code-try-0

如果您只想查看特定调用的产品,那么您可以使用以下任何解决方案,我更喜欢日志分析。

https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-use-azure-monitor

答案 1 :(得分:0)

如果您有密钥并想知道哪个产品的密钥,您可以使用 Azure PowerShell:API management module 来执行此操作。

试试下面的代码:

$apimName = "<apim name>"
$apimSresourceGroup = "<apim resource group name>"
$key = "<your ssubscription key>"

$apim_context = New-AzApiManagementContext -ResourceGroupName $apimSresourceGroup -ServiceName $apimName

$subs = Get-AzApiManagementSubscription -Context $apim_context
foreach($sub in $subs){
    if($sub.PrimaryKey -eq $key -or $sub.SecondaryKey -eq $key){
        write-host 'this key is for product:'$sub.ProductId' belongs to user with ID:' $sub.UserId ' subscription name:'$sub.Name
    }
}

结果: enter image description here

如果您有任何其他问题,请告诉我。