当前位置: 首页 > 知识库问答 >
问题:

Azure REST访问令牌

董砚
2023-03-14

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

如果可能的话,我也希望使用Azure来获得访问密钥和令牌。我在这里找到了一些关于如何欣赏的教程:https://www.youtube.com/watch?v=ujzrq8Fg9Gc

我看到还有oAuth2,这太多了,无法为这个项目设置它。

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

因此,任何帮助都可以找到轻松访问密钥和令牌来列出、创建、更新虚拟机。

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

更新:我发现这个很简单:https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/createorupdate

只要说:放https://management.azure.com/subscriptions/{订阅ID}/resourceGroups/{resourceGroupName}/providers/Microsoft。计算/虚拟机/{vmName}?api版本=2017-12-01

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

共有2个答案

蓝夕
2023-03-14

要获得Azure AD Authorization server的授权,您需要首先获取访问令牌。URI(PUT)不够。要获取访问令牌,通常您需要转到Azure AD注册您的客户端应用程序(这是一种用于授权的对象,而不是您可能认为的苹果或Android商店中的应用程序)。注册应用程序时,您将获得客户端ID,并可以生成客户端密码。通过租户ID、客户机ID和客户机机密,您可以使用HTTP请求从OAuth2endpoint请求访问令牌https://login.microsoftonline.com/{tenantID}/oauth2/token。拥有访问令牌后,需要在Http请求中构造授权标头。这是不记名代币。

使用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的组合。计算/虚拟机/{vmName}?api版本=2017-12-01

我在这里详细介绍了带有Http请求的访问令牌http://thuansoldier.net/?p=6790

如果您想了解有关如何使用PUT to request to Azure Resource Manager API的更多详细信息,请参阅以下详细信息http://thuansoldier.net/?p=7292(查找标题Creating a new key vault,我在其中描述了如何使用PUT和构造请求体)这正是创建新VM资源所需要的。

冉永宁
2023-03-14

正如Thuan Ng所说,您首先需要获得令牌。如果您想获得令牌,您需要创建一个服务主体并赋予它Owner角色。更多信息请查看此链接。

创建sp后,您将获得客户端id、客户端机密。您可以使用它们来获取令牌。更多信息,请访问链接。要使power shell获取令牌,可以使用以下示例:

##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 

获得令牌后,您可以调用rest API。例如:

 类似资料:
  • 访问令牌凭据(以及任何机密的访问令牌属性)在传输和储存时必须保持机密性,并只与授权服务器、访问令牌生效的资源服务器和访问令牌被颁发的客户端共享。访问令牌凭据必须只能使用带有RFC2818定义的服务器身份验证的1.6节所述的TLS 传输。 当使用隐式授权许可类型时,访问令牌在URI片段中传输,这可能泄露访问令牌给未授权的一方。 授权服务器必须确保访问令牌不能被生成、修改或被未授权一方猜测而产生有效的

  • 访问令牌是用于访问受保护资源的凭据。访问令牌是一个代表向客户端颁发的授权的字符串。该字符串通常对于客户端是不透明的。令牌代表了访问权限的由资源所有者许可并由资源服务器和授权服务器实施的具体范围和期限。 令牌可以表示一个用于检索授权信息的标识符或者可以以可验证的方式自包含授权信息(即令牌字符串由数据和签名组成)。额外的身份验证凭据——在本规范范围以外——可以被要求以便客户端使用令牌。 访问令牌提供了

  • 难以理解oauth2令牌和刷新令牌进程 我有这个代码 上面的代码给了我一个访问令牌,我遵循了stackoverflower的同事pinoyyid建议的链接,但是,我对如何正确使用生成的访问令牌访问驱动器和复制文件感到困惑。。。 我看到的所有过程通常都涉及到,我不确定如何使用整个帖子http://.....事情,所以基本上我需要弄清楚,如果我在谷歌客户端的一个新实例中使用上面的代码获得的访问令牌,或

  • 我很难让Auth0以JWT格式返回访问令牌。我需要JWT格式的文件,以便使用javajwt库验证它们。 我正在使用Auth0登录,并使用获取访问令牌-我尝试将访问群体设置为我们的API标识符(在多个位置,包括lock auth参数和负载),但没有成功-返回访问令牌,但不是JWT。 或者,是否有用于验证“本机”Auth0访问令牌的Java库? 返回的代码用于POST到

  • 本文向大家介绍oauth 刷新访问令牌,包括了oauth 刷新访问令牌的使用技巧和注意事项,需要的朋友参考一下 示例 资源

  • 访问令牌的类型给客户端提供了成功使用该访问令牌(和类型指定的属性)发起受保护资源请求所需的信息 若客户端不理解令牌类型,则不能使用该访问令牌。 例如,RFC6750定义的“bearer”令牌类型简单的在请求中包含访问令牌字符串来使用: GET /resource/1 HTTP/1.1 Host: example.com Authorization: Bearer F_9.B5f-4.1JqM 而