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

如何在ms-identity-web中用证书作为client_credential实现Flask Azure AD认证

使用ms-identity-web Flask模块配置Azure AD证书认证

核心解决方案

ms-identity-web模块支持证书形式的客户端凭据,只是配置逻辑和字符串密钥不同,你可以通过以下两种方式实现:


方式1:修改JSON配置文件(推荐)

确保你的配置文件中替换client_secret字段,使用包含证书信息的client_credential字典,同时注意私钥的格式处理:

  • 更稳妥的方式是将私钥存为单独的文件(比如private_key.pem),使用private_key_path字段替代private_key,避免JSON转义错误
  • 如果直接写在JSON里,私钥的换行需要用\n转义,否则会导致JSON解析失败

正确的配置示例(文件路径方式):

{
  "client_id": "你的应用ID",
  "authority": "https://login.microsoftonline.com/你的租户ID",
  "client_credential": {
    "thumbprint": "450504A...",
    "private_key_path": "./private_key.pem"
  }
}

直接写入私钥的转义格式示例:

{
  "client_id": "你的应用ID",
  "authority": "https://login.microsoftonline.com/你的租户ID",
  "client_credential": {
    "thumbprint": "450504A...",
    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...\n-----END PRIVATE KEY-----"
  }
}

方式2:代码层面手动传入证书凭据

如果JSON配置的方式不生效,可以跳过配置文件的client_credential字段,在初始化认证对象时手动传入证书参数:

from ms_identity_web import IdentityWebPython
from ms_identity_web.configuration import AADConfig
from flask import Flask

# 加载基础配置
aad_config = AADConfig.parse_json('config.json')
# 手动设置证书凭据
aad_config.client_credential = {
    "thumbprint": "450504A...",
    "private_key": open('./private_key.pem').read()
}
# 初始化认证对象
app = Flask(__name__)
app.config['MS_IDENTITY_WEB'] = IdentityWebPython(aad_config)

关键注意事项

  • 确保使用的ms-identity-web版本 >= 1.0.0,早期版本可能未支持证书凭据的配置
  • Azure AD应用注册中上传的公钥,其指纹必须和配置中的thumbprint完全一致(注意大小写,通常为大写)
  • 私钥文件需要设置严格的权限,避免泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:30:15