我的AzureAD注册的应用程序无权执行任何操作......?

时间:2017-08-18 09:04:01

标签: c# azure oauth-2.0 httprequest azure-active-directory

我现在正在编写一个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)'."}}.

事情是......我用来设置所有内容的帐户是全局管理员。我检查了AzureAD中我可以找到的每个权限框......

(Windows Azure Active Directory API中有8个应用程序权限和9个委派权限,Windows Azure Service Management API中有1个委派权限,但我不知道为什么Azure Service Management没有更多可能的权限)

相关的代码是相当基本但它的工作原理我不觉得我需要发布它,我只是说我使用Microsoft.IdentityModel.Clients.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中的一个设置,但我在那里发现的所有内容似乎都设置正确(或者更确切地说是“通用访问”)。

1 个答案:

答案 0 :(得分:0)

根据您的描述,您忘记授予您的服务主管。您可以在Azure门户上添加它。您可以向其授予isSameContent_with_distinct_content()

请参阅此link:Assign application to role