我正在尝试使用java sdk连接到Azure Resource Manager API。我有一个AD应用程序,它启用了"Windows服务管理API“权限。在运行测试示例时,我在特定资源组上执行get调用时遇到以下错误。
Exception in thread "main" com.microsoft.windowsazure.exception.ServiceException: AuthorizationFailed: The client '1111-5a7b-4384-9fee-3a593a8c6875' with object id '1111115-5a7b-4384-9fee-3a593a8c6875' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/zzzzzzzzzzzz-ae67-ed0926abfe0d/resourcegroups/Group'.
at com.microsoft.windowsazure.exception.ServiceException.createFromJson如何在用于连接到资源管理API的AD中为应用程序分配读写权限
发布于 2015-11-27 22:12:05
正如@Gaurav Mantri所说,如果在https://github.com/Azure/azure-sdk-for-java/blob/master/azure-mgmt-samples/src/main/java/com/microsoft/azure/samples/authentication/ServicePrincipalExample.java上运行示例ServicePrincipalExample,为您的广告应用程序分配读者角色的最简单方法是使用Azure预览门户。
有关此操作的完整详细信息,请参阅下面的内容。

根据上图,步骤如下:
在filter items字段中单击资源组名称,然后单击选定的资源组。然后单击settingsbutton.
Resource groups.
Usersbutton.

Select a role并选择Reader角色。
单击广告应用程序按钮,在搜索字段中输入广告应用程序名称,然后选择该广告应用程序以单击Add access选项卡页中的select button.
OK按钮。现在,您可以再次运行该示例,它将返回正确的结果,而不会出现错误。
除了Azure PowerShell之外,你也可以使用Azure CLI来做这件事。
使用您的用户名和密码登录azure cli,在arm模式下运行azure login
azure config mode arm
azure role assignment create --objectId <objectId> -o Reader -c /subscriptions/<subscriptionId>/>.注意:对于对象Id,您可以运行
azure ad sp show --search <ad-app-name>来显示它。
然后,在没有错误的情况下再次运行该示例。
发布于 2015-11-26 14:42:17
你需要做的是在你的Azure订阅中分配你的应用程序Reader角色。您可以使用ARM API以编程方式完成此操作,也可以使用Azure PowerShell完成此操作。
但是,对于您来说,最简单的方法是使用Azure Preview Portal分配角色。您可能会发现此链接对于使用预览门户:https://azure.microsoft.com/en-in/documentation/articles/role-based-access-control-configure/分配角色很有用。
https://stackoverflow.com/questions/33930828
复制相似问题