You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Azure AD应用名称与所有者信息?权限问题求助

解决Azure AD应用名称与所有者信息获取的权限问题

核心问题分析

你遇到的权限报错源于SDK与配置权限不兼容:azure-graphrbac Python包调用的是旧版Azure AD Graph API,而你配置的Microsoft.Directory/applications/allProperties/read和Microsoft.Directory/applications/owners/read是Microsoft Graph的自定义角色操作权限,二者不属于同一API体系,自然无法匹配生效。

两种解决方案

方案1:继续使用azure-graphrbac(不推荐,旧API已弃用)

需配置旧版Azure AD Graph对应的自定义操作权限:

  • 在自定义角色JSON中添加以下权限:
    • Microsoft.AzureActiveDirectory/applicationObjects/allProperties/read
    • Microsoft.AzureActiveDirectory/applicationObjects/owners/read
  • 确保应用被分配该自定义角色,且角色范围覆盖租户级目录。

方案2:切换到Microsoft Graph SDK(官方推荐)

旧版Azure AD Graph已停止更新,建议使用azure-identity搭配msgraph-sdk-python包,步骤如下:

  1. 权限配置:
    保留你之前添加的Microsoft.Directory/applications/allProperties/read和Microsoft.Directory/applications/owners/read,或直接分配内置的Application.Read.All权限(若允许使用内置角色)。
  2. 示例代码:
    from azure.identity import ClientSecretCredential
    from msgraph import GraphServiceClient
    
    # 初始化凭据
    credential = ClientSecretCredential(
        tenant_id="你的租户ID",
        client_id="你的客户端ID",
        client_secret="你的客户端密钥"
    )
    
    # 初始化Graph客户端
    graph_client = GraphServiceClient(credential)
    
    # 获取指定应用基本信息
    app_id = "目标应用ID"
    application = await graph_client.applications.by_application_id(app_id).get()
    print(f"应用名称: {application.display_name}")
    
    # 获取应用所有者列表
    owners = await graph_client.applications.by_application_id(app_id).owners.get()
    print("应用所有者:")
    for owner in owners.value:
        owner_info = owner.display_name
        if hasattr(owner, 'user_principal_name'):
            owner_info += f" ({owner.user_principal_name})"
        print(f"- {owner_info}")
    

额外注意事项

  • 权限分配后需等待15-30分钟才能全局生效,不要立即测试。
  • 自定义角色的分配范围需设置为「目录(租户)」级,否则无法读取全局应用数据。

内容的提问来源于stack exchange,提问作者Vik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:15:40