我现在正在编写一个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中的8个应用程序权限和9个委托权限,以及Windows服务管理API中的1个委托权限,不过我不知道为什么Azure服务管理没有更多的可能权限)
相关代码是相当基本的,但是它可以工作,所以我觉得我不需要发布它,我只想说我是使用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()提出请求
(举个例子,这个角色应该称为角色)。
尝试了对不同URI的几种不同类型的GET请求,都给出了类似的错误。
我认为这可能不是代码的问题,而是AzurePortal中的设置问题,但我在那里发现的一切似乎都是正确的(或者更确切地说,是“通用访问”)。
发布于 2017-08-18 10:04:36
根据您的描述,您忘记授予您的服务负责人。你可以把它添加到Azure Portal上。你可以把Contributor or Owner role给它。
请参阅此链接:将应用程序分配给角色。
https://stackoverflow.com/questions/45752717
复制相似问题