我正在尝试使用Azure Resource Manager API
sdk连接到java
。我有一个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
如何为AD中的应用程序分配读写权限,用于连接资源管理API
?
答案 0 :(得分:3)
正如@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预览门户。
有关完整的详细信息,请参阅下文。
根据上图,步骤如下:
Resource groups
。settings
按钮。Users
按钮。Add
按钮。
Select a role
,然后选择Reader
角色。
Add users
按钮,在搜索字段中输入广告应用名称,然后选择广告应用以点击select
按钮。OK
标签页中的Add access
按钮。现在,您可以再次运行样本,返回正确的结果而不会出错。
除Azure PowerShell外,您还可以使用Azure CLI执行此操作。
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>
来显示它。
然后,再次运行样本,没有错误。
答案 1 :(得分:0)
您需要做的是在Azure订阅中分配应用程序Reader
角色。这可以使用ARM API以编程方式执行,也可以使用Azure PowerShell
来执行此操作。
但最简单的方法是使用Azure Preview Portal
分配角色。您可能会发现此链接对于使用预览门户分配角色非常有用:https://azure.microsoft.com/en-in/documentation/articles/role-based-access-control-configure/。