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

使用Microsoft Graph移除Service Principal证书遇令牌错误问题排查

排查服务主体证书删除时Access Token missing or malformed错误的关键点

针对你用Microsoft Graph 5.14.0删除服务主体证书时遇到的问题,结合高权限操作的proof token要求,以下是最可能的错误点和解决方向:

1. Proof Token的受众(Audience)设置错误

删除服务主体证书调用的是Microsoft Graph API,因此proof token的aud claim必须严格设置为https://graph.microsoft.com,而不是Graph API的客户端GUID(00000003-0000-0000-c000-000000000000)。你之前尝试用GUID作为受众是不符合要求的,这会导致proof token不被AAD认可。

2. Proof Token的主题(Subject)混淆了SP ID和应用ID

proof token的sub和iss claim必须填写调用方Service Principal的Object ID,而不是关联应用的Application ID(Client ID),也不是应用的Object ID。你需要确认自己使用的是SP的Object ID——可以在Azure AD的"企业应用"中找到对应SP的Object ID,而非"应用注册"里的应用ID。

3. 生成Proof Token的证书选择错误

必须使用当前用于认证获取Graph Access Token的那枚有效证书来签名proof token,不能用待删除的证书。待删除的证书可能已经不在SP的有效凭据列表中,用它签名的proof token会被AAD拒绝。

4. Proof Token的JWT格式与Claim不完整

确保生成的proof token是标准JWT格式,且包含以下必填claim:

  • aud: https://graph.microsoft.com
  • iss: 调用方SP的Object ID
  • sub: 调用方SP的Object ID
  • iat: 当前Unix时间戳(秒)
  • exp: 过期时间戳(建议设置为10分钟后,不能超过1小时)
  • jti: 随机生成的唯一字符串(防止重放攻击)
    签名算法必须与认证证书的算法一致(通常为RS256)。

5. Graph SDK 5.x中Proof Token的传递方式错误

在Graph SDK 5.x中,需要将proof token直接添加到请求头的proof字段中,而非通过其他方式传递。示例代码如下:

// 假设已生成正确的proofToken字符串
var spObjectId = "调用方SP的Object ID";
var deleteCertificateCommand = new RemovePasswordPostRequestBody
{
    KeyId = "待删除证书的Key ID"
};

var request = graphClient.ServicePrincipals[spObjectId].RemovePassword.PostAsync(deleteCertificateCommand);
request.Headers.Add("proof", proofToken);
await request;

如果使用自定义请求配置,也要确保proof字段被正确注入到请求头。

6. 额外排查:Access Token本身的有效性

虽然你怀疑是proof的问题,但也需要验证Access Token的有效性:

  • 用jwt.ms解析Token,确认aud为https://graph.microsoft.com,roles包含Application.ReadWrite.All(或更细粒度的权限),且Token未过期。
  • 确保Token是通过应用权限流获取的(因为是Service Principal调用),而非委派权限流。

7. 证书加载的权限问题

生成proof时加载的PFX文件必须包含完整的私钥,且程序运行时拥有访问私钥的权限。如果是在容器或服务器环境中,要确保证书文件的权限配置正确,避免私钥无法读取导致签名失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:17:31