使用Azure Rest API获得Access Token介绍

背景

本文主要介绍如何获取如何获取Azure Rest API的访问token,所采用的是v2.0版本的Microsoft标识平台,关于1.0和2.0的区别可以参考 https://docs.azure.cn/zh-cn/active-directory/azuread-dev/azure-ad-endpoint-comparison 此文档

原理

采用的是OAuth2.0协议的客户端凭据授予的方式,即直接使用client id和secret获取令牌。

Snipaste_2020-04-12_21-54-29

步骤

1.新建AAD应用、,导航到Azure门户的AAD界面,选择应用注册,点击新注册。

Snipaste_2020-04-12_21-56-47

按照下图填写信息,如果选择多租户是允许访问其他租户的应用,由于我们不涉及到登陆的内容,所以重定向URI无需填写。

Snipaste_2020-04-12_21-57-53

2.按照下图的方式,授予AAD应用访问Azure管理服务API权限:

Snipaste_2020-04-12_22-02-45

Snipaste_2020-04-12_22-03-06

3.接下来授予AAD 应用服务的访问权限,在相关服务的访问控制页面授予AAD应用参与者权限(建议赋予这更订阅的权限,这样可以操作所有应用)

Snipaste_2020-04-12_22-12-59

4.收集AAD应用信息,需要租户id,client id,client secret。

进入AAD页面,按照下图方式生成密钥,并且保存密钥,该密钥为client secret

Snipaste_2020-04-12_22-00-17

按照下图收集client id和租户id

Snipaste_2020-04-12_22-02-18

5.发送token请求,标黄的部分需要填写上个步骤获取的信息:

curl --location --request POST 'https://login.partner.microsoftonline.cn/租户ID/oauth2/v2.0/token '

--form 'grant_type=client_credentials'
--form 'client_id=client id
--form 'client_secret=client secret'
--form 'scope=https://management.chinacloudapi.cn/.default'

测试截图:


Snipaste_2020-04-12_22-20-23


附:

也可以使用账户名和密码的方式获取token,但是极不推荐这种方式,因为这种方式是最不安全的,如果想要了解的话可以参考此博客 https://www.cnblogs.com/fenwan/p/7884202.html 

参考文档:

https://docs.microsoft.com/zh-cn/rest/api/azure/#register-your-client-application-with-azure-ad

https://docs.azure.cn/zh-cn/active-directory/develop/v2-oauth2-client-creds-grant-flow#get-a-token 

https://docs.azure.cn/zh-cn/active-directory/develop/v2-overview 

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

原文地址:https://www.cnblogs.com/junshijie/p/12688188.html