【问题标题】:Azure REST access tokenAzure REST 访问令牌
【发布时间】:2018-03-12 15:10:35
【问题描述】:
【问题讨论】:
标签:
azure
azure-web-app-service
【解决方案1】:
正如 Thuan Ng 所说,您需要先获取令牌。如果你想获得令牌,你需要创建一个服务主体并赋予它Owner 角色。更多信息请查看link。
sp创建完成后,会得到client id,client secret。您可以使用它们来获取令牌。更多信息,您可以获取link。 power shell 获取token,可以使用下面的例子:
##get token
$TENANTID=""
$APPID=""
$PASSWORD=""
$result=Invoke-RestMethod -Uri https://login.microsoftonline.com/$TENANTID/oauth2/token?api-version=1.0 -Method Post -Body @{"grant_type" = "client_credentials"; "resource" = "https://management.core.windows.net/"; "client_id" = "$APPID"; "client_secret" = "$PASSWORD" }
$token=$result.access_token
##set subscriptionId and resource group name
$subscriptionId=""
$resourcegroupname="shui5"
$Headers=@{
'authorization'="Bearer $token"
'host'="management.azure.com"
'contentype'='application/json'
}
$body='{
"location": "northeurope",
"tags": {
"tagname1": "test-tag"
}
}'
Invoke-RestMethod -Uri "https://management.azure.com/subscriptions/$subscriptionId/resourcegroups/${resourcegroupname}?api-version=2015-01-01" -Headers $Headers -Method PUT -Body $body
对于邮递员:
拿到token后,就可以调用rest API了。例如:
【解决方案2】:
要获得 Azure AD 授权服务器的授权,您需要先获取访问令牌。 URI (PUT) 是不够的。要获取访问令牌,通常您需要到 Azure AD 注册您的客户端应用程序(它是一种用于授权的对象,而不是您可能认为的 Apple 或 Android 商店中的应用程序)。注册应用程序时,您将获得客户端 ID,并且可以生成客户端密码。通过租户 ID、客户端 ID 和客户端密码,您可以使用 HTTP 请求从 OAuth2 端点 https://login.microsoftonline.com/{tenantID}/oauth2/token 请求访问令牌。获得访问令牌后,您需要在 Http 请求中构造授权标头。我是Bearer token。
使用PUT时,还需要构造请求体对象。这是一个例子
var requestBody = new
{
location = westus,
properties = new
{
hardwareProfile = new
{
vmSize = "Standard_D1_v2"
},
storageProfile = new
{
osDisk = new
{
name = "VMDisk",
image = new
{
uri = ...
}
}
}
....
};
请求正文不必像我上面定义的那样是匿名类型。这取决于你的熟悉程度。如果使用这样的结构,您可以使用 PutAsJsonAsync(url, requestBody) 。 Url其实就是请求Url,它是Uri(management.azure.com)和参数{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2017-12-01的组合
我在这里用Http Request详细说明了访问令牌http://thuansoldier.net/?p=6790
如果您想了解有关如何使用 PUT 向 Azure 资源管理器 API 请求的更多详细信息,请参阅此处的详细信息 http://thuansoldier.net/?p=7292(查找标题创建新的密钥保管库,其中我描述了如何使用 PUT 和构造请求正文)这正是您创建新 VM 资源所需要的。