授权:无记名+代币发行

时间:2018-12-27 10:32:26

标签: azure azure-active-directory azure-resource-manager

我正在使用Azure API。

我需要获取所有虚拟机列表,并需要执行START STOP RESTART之类的操作。

当我尝试从此链接获取所有订阅的列表时,它的工作正常: https://docs.microsoft.com/en-us/rest/api/resources/subscriptions/list

但是从我的API中我得到的结果为空。

我确定了问题,并且该问题是授权:不记名+令牌问题

当我传递静态授权时:Bearer Token。它可以在我的api中正常工作,但是当我从CURL获取授权令牌时,它会返回null数据。

我正在使用以下代码获取访问令牌。

$strAppTenantDomainName="exmple.com"; // This is tenant domain name
$arrCurlOptions[CURLOPT_POSTFIELDS] = ['client_id'=> 'xxxxxx','client_secret'=> 'xxxxxx','resource'=> "https://management.azure.com/",'grant_type'=> 'client_credentials'];

$arrAccessTokenDetails = cUrl_process("https://login.microsoftonline.com/$strAppTenantDomainName/oauth2/token",$arrCurlOptions);

请帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

我可以重现您的问题,我想您尚未将AD App添加为订阅中的角色。

enter image description here

要解决此问题,请在门户中导航至您的订阅-> Access control (IAM)-> Add role assignment->将AD App添加为owner角色(例如)。

然后它将正常工作。

enter image description here 有关更多详细信息,请参阅此link