如何使用OAuth2.0将Microsoft资源管理API作为服务访问

4sup72z8  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(84)

我正在开发一个时间触发的服务,从各种API中获取数据并将其写入数据库。我需要访问的API之一是Microsoft资源管理API。然而,问题是它的端点都提到了OAuth2.0显式授权流--这需要用户登录。由于我正在创建一个自动化服务,因此无法使用该流程。
例如,列表资源组端点(https://learn.microsoft.com/en-us/rest/api/resources/resource-groups/list)提到了具有user_impersonation作用域的Oauth2隐式授权流:
https://i.stack.imgur.com/0XmIW.png
是否有可能从这个API作为服务获取数据,如果有,我该如何去做呢?是否有其他方法可以从Azure平台获取资源组和资源的列表?
我确实成功地利用了OAuth2.0客户端可信授权流来使用Graph API作为服务进行身份验证,但在这里似乎不可能。

iyr7buue

iyr7buue1#

要调用Azure管理REST API,需要生成访问令牌,范围为**https://management.azure.com/.default
我注册了一个Azure AD应用,并添加了
API权限**,如下所示:

请确保在订阅的上述服务主体中添加合适的RBAC角色
在我的例子中,我在订阅下的服务主体中添加了**Reader**角色,如下所示:

现在,我通过Postman使用客户端凭证流生成了access token,参数如下:

POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
grant_type:client_credentials
client_id:<appID>
client_secret:<secret>
scope: https://management.azure.com/.default

回复:

当我使用该访问令牌调用下面的管理API查询时,成功得到资源组列表的响应如下:

GET https://management.azure.com/subscriptions/<subID>/resourcegroups?api-version=2021-04-01

响应:

相关问题