如何通过Azure API(Python库)由Application-ID获取Object-ID?
通过Python获取Azure注册应用的Object-ID(已知Application-ID)
前置准备
- 确保你的Azure应用注册已获得Application.Read.All应用权限,且已完成管理员同意(在Azure门户的应用注册->API权限页面操作)
- 准备好以下信息:
- 租户ID(Azure AD的租户ID)
- 应用的Application-ID(即client_id)
- 应用的客户端密码(client_secret,需在应用注册的“证书和密码”页面生成)
安装依赖库
执行以下命令安装所需的Python包:
pip install azure-identity azure-mgmt-graphrbac
Python代码实现
from azure.identity import ClientSecretCredential from azure.mgmt.graphrbac import GraphRbacManagementClient # 替换为你的实际信息 TENANT_ID = "你的租户ID" CLIENT_ID = "你的应用Application-ID" CLIENT_SECRET = "你的应用客户端密码" # 初始化认证凭据 credential = ClientSecretCredential( tenant_id=TENANT_ID, client_id=CLIENT_ID, client_secret=CLIENT_SECRET ) # 初始化Graph RBAC客户端 graph_client = GraphRbacManagementClient( credential=credential, tenant_id=TENANT_ID ) # 查询应用并获取Object-ID def get_app_object_id(app_id): # 用filter精准匹配目标应用,避免全量遍历 apps = graph_client.applications.list(filter=f"appId eq '{app_id}'") for app in apps: return app.object_id return None # 调用函数获取结果 object_id = get_app_object_id(CLIENT_ID) if object_id: print(f"应用的Object-ID是: {object_id}") else: print("未找到对应Application-ID的应用")
关键说明
- 代码通过
filter参数精准定位目标应用,提升查询效率 - 若租户内应用数量较多,
list方法会返回分页结果,可通过next_link循环获取所有页数据 - 若遇到权限相关错误,检查应用权限是否已正确添加并完成管理员同意
内容的提问来源于stack exchange,提问作者michael
相关产品推荐
相关产品推荐

