如何在Azure for Network Rest API中获取访问令牌?

Bab*_*ber 1 azure azure-virtual-network

以下是Azure Network API的参考点:

以下信息对所有任务都是通用的:

  1. 将{api-version}替换为2015-06-15.
  2. 将{subscription-id}替换为URI中的订阅标识符.
  3. 将{resource-group-name}替换为资源组.有关更多信息,请参阅使用资源组管理Azure资源.
  4. 将Content-Type标头设置为application/json.
  5. 将Authorization标头设置为从Azure Active Directory获取的JSON Web标记.

我对第5点感到困惑.您能否指导我如何使用Azure Active Directory获取访问令牌?

Mic*_*l B 5

Azure Active Directory基于oauth身份验证协议构建,如RFC 6749 OAuth 2.0授权框架中所定义

使用令牌的概念是,您可以向中央权限进行身份验证,然后将权限授予单独的系统,而无需为该系统提供凭据.

使用客户端凭据服务到服务呼叫

摘自https://msdn.microsoft.com/en-gb/library/azure/dn645543.aspx

在这种情况下,如果在3中调用的服务器遭到破坏,则凭据仍然是安全的,并且攻击者只能在令牌过期之前访问资源.因此,令牌通常是短暂的.

您可以通过login.microsoftonline.com使用以下内容发出POST请求来获取令牌

POST contoso.com/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F
Run Code Online (Sandbox Code Playgroud)

这将产生以下响应

{
"access_token":"eyJhbGciOiJSUzI1NiIsIng1dCI6IjdkRC1{shorted}",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}
Run Code Online (Sandbox Code Playgroud)

从中您可以获取访问令牌并在您的应用程序中使用它.

这是Azure的身份验证流程,无法将其更改为仅使用预配置的令牌.即使您使用证书,您仍然会获得一个令牌,并使用它来对资源进行授权.