如何将读写权限分配给AD应用程序,以使用Azure java sdk的资源管理api管理资源

如何将读写权限分配给AD应用程序,以使用Azure java sdk的资源管理api管理资源,java,azure,azure-java-sdk,Java,Azure,Azure Java Sdk,我正在尝试使用javasdk连接到Azure资源管理器API。我有一个已启用“Windows服务管理API”权限的广告应用程序。在运行测试样本时,我在对特定资源组执行get调用时遇到以下错误 Exception in thread "main" com.microsoft.windowsazure.exception.ServiceException: AuthorizationFailed: The client '1111-5a7b-4384-9fee-3a593a8c6875' with

我正在尝试使用
java
sdk连接到
Azure资源管理器API
。我有一个已启用“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

您需要做的是在Azure订阅中分配您的应用程序
Reader
角色。这可以使用ARMAPI编程实现,也可以使用


但是,最简单的方法是使用分配角色。您可能会发现此链接对于使用预览门户分配角色非常有用:。

正如@Gaurav Mantri所说,为您的广告应用分配读者角色的最简单方法是使用Azure预览门户(如果运行示例
ServicePrincipalExample

有关完成此操作的完整详细信息,请参见下文

根据上图,步骤如下:

  • 单击
    资源组
  • 在“筛选项目”字段中输入资源组名称,然后单击所选资源组
  • 单击
    设置
    按钮
  • 单击
    用户
    按钮
  • 单击添加按钮。
  • 单击
    选择角色
    并选择
    读卡器
    角色。
  • 单击添加用户按钮,在搜索字段中输入广告应用程序名称,然后选择广告应用程序,然后单击选择按钮
  • 单击
    addaccess
    选项卡页面中的
    OK
    按钮
  • 现在,您可以再次运行示例,以返回正确的结果,而不会出现错误

    除了Azure PowerShell之外,您还可以使用Azure CLI来执行此操作

  • 使用用户名和密码登录azure cli,运行
    azure登录
  • 切换arm模式,运行azure配置模式arm
  • 角色分配,运行
    azure角色分配创建--objectId-o Reader-c/subscriptions/>
  • 注: 对于对象Id,您可以运行
    azure ad sp show--search
    来显示它


    然后,再次运行样本,无错误。

    谢谢@Gaurav Mantri。我可以使用powershell分配角色。并且能够使用azure maven java SDK对资源执行调用。再打一个嗝。。。我正在尝试通过此调用列出操作系统映像。VirtualMachineImageSourceList l=cmc.getVirtualMachineImagesOperations().list(null);但它在线程“main”com.microsoft.windowsazure.exception.ServiceException:BadRequest:请求URL无效时引发异常。在com.microsoft.windowsazure.exception.serviceeexception.createFromJson(serviceeexception.java:292)在com.microsoft.azure.management.compute.VirtualMachineImageOperationsImpl.list(VirtualMachineImageOperationsImpl.java:441)我在这里缺少什么?我想,你可能想把这个问题作为一个单独的问题发布。谢谢@Peter Pan。我可以使用powershell更新角色。上面显示的门户示例正在更新特定资源组上的角色,而不是AD应用程序上的角色。是否正确?这是什么意思?我们仅更新此特定资源组的访问权限。。这与在API应用程序上更新访问权限不同。如果我错了,请纠正我。这很令人困惑(@Sam它正在为资源组分配
    Reader
    角色权限。然后,资源管理API可以读取与资源组相关的AD应用程序Id中的元数据。我认为您应该查看@Gaurav Mantri的参考链接。在API应用程序中,网关主机控制访问权限,该权限与他的那个。