如何通过Python调用Azure API或SDK获取注册应用及关联证书详情
Python对接Azure获取租户应用及证书信息方案
前置依赖准备
- 权限配置:在Azure门户注册一个用于接口调用的辅助应用,为其授予Microsoft Graph 应用权限 > Application.Read.All,完成管理员同意授权
- 凭证获取:记录该辅助应用的
客户端ID、客户端密钥、所属租户ID三个参数 - 依赖安装:执行命令安装所需SDK
pip install azure-identity msgraph-core
实现逻辑说明
直接调用Microsoft Graph的applications接口即可获取所有已注册应用的全量信息,其中每个应用的keyCredentials字段存储了所有关联的证书、密钥凭证相关数据,包含你需要的指纹、有效期等字段。
完整可运行代码
from azure.identity import ClientSecretCredential from msgraph.core import GraphClient # 替换为你自己的凭证参数 TENANT_ID = "你的租户ID" CLIENT_ID = "你的辅助应用客户端ID" CLIENT_SECRET = "你的辅助应用客户端密钥" # 初始化认证客户端 credential = ClientSecretCredential( tenant_id=TENANT_ID, client_id=CLIENT_ID, client_secret=CLIENT_SECRET ) client = GraphClient(credential=credential) # 调用接口拉取所有应用(含证书信息) response = client.get('/applications', params={'$select': 'displayName,appId,keyCredentials'}) app_list = response.json().get('value', []) # 遍历处理数据 for app in app_list: print(f"\n=== 应用名称:{app['displayName']} ===") print(f"应用ID:{app['appId']}") certs = app.get('keyCredentials', []) if not certs: print("该应用未关联任何证书") continue for idx, cert in enumerate(certs, 1): # 转换二进制指纹为十六进制字符串(通用格式) thumbprint = cert.get('customKeyIdentifier', b'').hex() print(f"\n第{idx}个证书信息:") print(f"证书名称:{cert.get('displayName', '未命名')}") print(f"证书指纹:{thumbprint}") print(f"有效期起始:{cert.get('startDateTime')}") print(f"有效期截止:{cert.get('endDateTime')}")
注意事项
- 如果需要获取的是**企业应用(服务主体)**的证书信息,将接口路径从
/applications替换为/servicePrincipals即可 keyCredentials仅包含证书类凭证,如需获取客户端密码类凭证,取passwordCredentials字段即可- 接口默认分页拉取,若租户应用量超过100个,需要处理
@odata.nextLink分页参数获取全量数据
内容的提问来源于stack exchange,提问作者Ayush Ujjwal
相关产品推荐
相关产品推荐

