使用 Graph API 列出虚拟机的权限

Permissions for listing virtual machines with Graph API

我正在尝试使用请求:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}?api-version=2020-12-01

来自微软图表 API:https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/get#code-try-0.

我在 AD 订阅中创建了应用程序注册。当我尝试使用与应用程序注册关联的 oauth2 凭据时,我收到 401。我认为这是由于权限错误造成的。我尝试使用 https://developer.microsoft.com/en-us/graph/graph-explorer,但我无法假设应用程序注册来模拟请求。任何关于为什么会发生这种情况或如何调试问题的见解都将非常有帮助

你的错误不是缺少权限而是使用错误scope.

错误其实很简单,你需要授予Azure Service Managementapi权限而不是MS graph权限,然后你需要将scope设置为: https://management.azure.com/user_impersonation.

接下来,使用auth code flow获取访问令牌。

  1. 在浏览器中请求授权码。
https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?
client_id={client id}
&response_type=code
&redirect_uri={redirect_uri}
&response_mode=query
&scope=https://management.azure.com/user_impersonation
&state=12345
  1. 兑换代币。

呼叫api:

请注意不要使用graph-explorer测试,因为你不是调用MS graphapi,你可以使用postman。

与接受的答案不同,我必须设置范围才能访问此 url...

https://management.azure.com/subscriptions/{SubscriptionID}/providers/Microsoft.Compute/virtualMachines?api-version=2020-12-01

至:

https://management.azure.com/.default