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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:54:03