【问题标题】:Azure REST access tokenAzure REST 访问令牌
【发布时间】:2018-03-12 15:10:35
【问题描述】:

我想要下一个: 从我的网站能够启动虚拟服务器(Ubuntu、linux、windows 服务器)。 我使用 AWS 进行了修改,通过 IAM 很容易找到访问密钥和令牌。

如果可能的话,我想对 Azure 做同样的事情,以获取访问密钥和令牌。我在这里找到了一些关于如何喜欢的教程:https://www.youtube.com/watch?v=ujzrq8Fg9Gc&t=51s 但它做了很多事情,我只需要密钥令牌和秘密令牌就可以访问虚拟主机并对其进行操作。

我看到还有 oAuth2 并且为这个项目设置它太多了。

还有所谓的天蓝色广告https://docs.microsoft.com/en-us/rest/api/

所以任何帮助都会很高兴找到用于列出、创建、更新虚拟机的简单访问密钥密钥和令牌。

也许是因为我有免费帐户?

更新: 我找到了这个,这很容易: https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/createorupdate

只需说:PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2017-12-01

subscriptionID 如果我提供这个,就够了吗? 我在想应该有一些授权?

【问题讨论】:

  • 有授权,阅读文档

标签: 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 资源所需要的。

    【讨论】:

      猜你喜欢
      • 2023-02-02
      • 2020-04-23
      • 1970-01-01
      • 2020-08-20
      • 2017-06-03
      • 2018-06-18
      • 2020-12-21
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多