我现在正在编写一个c程序,它试图通过Azure进行身份验证,以发出一个通用http请求。我终于让代码正常工作了,我想测试功能,但对于我提出的每个请求,我都会得到以下错误代码作为响应:
{"error":{"code": "AuthorizationFailed", "message":"The client "(id of the app I registered in AzureAD)" with object id "(same value as before)" does not have authorization to perform action 'Microsoft.Authorization/roleAssignments/read' over scope '/subscriptions/(mysubscriptionid)'."}}.
(在Windows Azure Active Directory API中有8个应用程序权限和9个委派权限,在Windows Azure服务管理API中有1个委派权限,但我不知道为什么Azure服务管理没有更多可能的权限)
相关的代码是相当基本的,但它的工作,所以我不觉得我需要张贴它,我只是说,我获得令牌使用微软。标识模型。客户。ActiveDirectory。AcquireTokenAsync()与
authorityUri = "https://login.windows.net/(mytenantid)",
string resourceUri = "https://management.azure.com/";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
var res = authContext.AcquireTokenAsync(resourceUri, new
ClientCredential(clientId,clientSecret));
return res.Result;
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments?api-version=2016-03-01&$filter=atScope()
尝试了几种不同类型的GET请求到不同的URI,都给出了类似的错误。
我认为这可能不是代码的问题,而是AzurePortal中的设置问题,但我发现那里的一切似乎都设置正确(或者更确切地说是“通用访问”)。