如何使用承载令牌从 Azure DevOps 调用 REST API
How do I Invoke a REST API from Azure DevOps using Bearer Token
我正在尝试使用 Azure DevOps 任务以编程方式将 LUIS 预测资源分配给 LUIS 应用程序,如记录的那样 here。简而言之,这涉及
- 从此 website 获取 Azure 资源管理器令牌。
- Assign a LUIS azure accounts to an application,使用上一步的 Bearer 令牌。
我可以手动执行这些步骤,但如何从 Azure DevOps 执行此操作?
我曾尝试使用无代理作业中的 'Invoke REST API' 任务,但看不到如何检索和使用 Bearer 令牌。
请注意 Bearer 令牌已过期。
感谢您的建议。
您可以在您的管道中添加一个 powershell 任务,以便从 azure devops 执行此操作。
获取Azure资源管理器令牌:您可以参考以下powershell脚本获取令牌。检查 here for more information about where to get client id and client secret. Please be noted that the resource here is "https://management.core.windows.net/"
$client_id = "{client id}"
$client_secret = "{client secret}"
$uri= "https://login.microsoftonline.com/{tenant id}/oauth2/token"
$Body = @{
'resource'= "https://management.core.windows.net/"
'client_id' = $client_id
'grant_type' = 'client_credentials'
'client_secret' = $client_secret
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept'='application/json'}
Body = $Body
Method = 'Post'
URI = $uri
}
$response = Invoke-RestMethod @params
$token = $response.access_token
获得令牌后,您可以将其传递给 LUIS rest api。以下脚本仅作为示例。
$LuisBody = @{
"azureSubscriptionId"= "{subscription_id}"
"resourceGroup"= "{resource_group_name}"
"accountName"= "{account_name}"
}
$Luisparams = @{
Headers = @{
Authorization = ("Bearer {0}" -f $token) # pass the token which got from above script
"Ocp-Apim-Subscription-Key" = "{subscription key}"
ContentType = "application/json"
}
Body = $LuisBody
Method = 'Post'
URI = "https://{endpoint}/luis/api/v2.0/apps/{appId}/azureaccounts"
}
Invoke-RestMethod @Luisparams
还有一个 blog 您可能会觉得有用。
更新:
使用 Azure CLI 使用以下脚本获取 Azure 资源管理器令牌:
az account get-access-token --resource=https://management.core.windows.net/ | jq -r .accessToken
我正在尝试使用 Azure DevOps 任务以编程方式将 LUIS 预测资源分配给 LUIS 应用程序,如记录的那样 here。简而言之,这涉及
- 从此 website 获取 Azure 资源管理器令牌。
- Assign a LUIS azure accounts to an application,使用上一步的 Bearer 令牌。
我可以手动执行这些步骤,但如何从 Azure DevOps 执行此操作? 我曾尝试使用无代理作业中的 'Invoke REST API' 任务,但看不到如何检索和使用 Bearer 令牌。 请注意 Bearer 令牌已过期。
感谢您的建议。
您可以在您的管道中添加一个 powershell 任务,以便从 azure devops 执行此操作。
获取Azure资源管理器令牌:您可以参考以下powershell脚本获取令牌。检查 here for more information about where to get client id and client secret. Please be noted that the resource here is "https://management.core.windows.net/"
$client_id = "{client id}"
$client_secret = "{client secret}"
$uri= "https://login.microsoftonline.com/{tenant id}/oauth2/token"
$Body = @{
'resource'= "https://management.core.windows.net/"
'client_id' = $client_id
'grant_type' = 'client_credentials'
'client_secret' = $client_secret
}
$params = @{
ContentType = 'application/x-www-form-urlencoded'
Headers = @{'accept'='application/json'}
Body = $Body
Method = 'Post'
URI = $uri
}
$response = Invoke-RestMethod @params
$token = $response.access_token
获得令牌后,您可以将其传递给 LUIS rest api。以下脚本仅作为示例。
$LuisBody = @{
"azureSubscriptionId"= "{subscription_id}"
"resourceGroup"= "{resource_group_name}"
"accountName"= "{account_name}"
}
$Luisparams = @{
Headers = @{
Authorization = ("Bearer {0}" -f $token) # pass the token which got from above script
"Ocp-Apim-Subscription-Key" = "{subscription key}"
ContentType = "application/json"
}
Body = $LuisBody
Method = 'Post'
URI = "https://{endpoint}/luis/api/v2.0/apps/{appId}/azureaccounts"
}
Invoke-RestMethod @Luisparams
还有一个 blog 您可能会觉得有用。
更新: 使用 Azure CLI 使用以下脚本获取 Azure 资源管理器令牌:
az account get-access-token --resource=https://management.core.windows.net/ | jq -r .accessToken