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

如何通过Azure应用注册密钥/证书使用MIP SDK撤销文档访问权限?

问题分析与解决方案

根本原因

MIP SDK的文档撤销操作依赖于拥有AIP高级许可证的用户身份,而你使用的ConfidentialClientApplication属于客户端凭据流(Client Credentials Flow),该流以应用自身身份请求令牌,并不关联任何具体用户的许可证,因此会触发NotPremiumLicenseUser错误。

可行解决方案

方案1:改用用户关联的身份流(推荐)

撤销操作必须关联到拥有有效AIP高级许可证的用户,因此应使用代表用户的授权流,比如:

  • 授权码流(Authorization Code Flow):适用于交互式场景
  • On-Behalf-Of流:适用于后端服务接收用户令牌后,代表用户执行操作

示例代码(On-Behalf-Of流):

// 假设已获取到用户的访问令牌userAccessToken
var confidentialApp = ConfidentialClientApplicationBuilder
    .Create(config.ClientId)
    .WithClientSecret(config.Secret)
    .WithAuthority(authority)
    .Build();

// 请求代表用户的令牌,用于MIP SDK操作
var result = await confidentialApp.AcquireTokenOnBehalfOf(
    new[] { "https://aadrm.com/.default" }, // 替换为所需的MIP SDK scope
    new UserAssertion(userAccessToken))
    .ExecuteAsync();

return result.AccessToken;

方案2:通过AIP超级用户授权应用身份

如果必须使用应用自身身份执行撤销操作,需要完成以下配置:

  1. 配置应用权限:在Azure AD应用注册中,添加Microsoft Information Protection API的Application类型权限:
    • Policy.Read.All
    • Policy.Write.All
      (添加后需全局管理员同意权限)
  2. 启用AIP超级用户:
    • 在租户中开启AIP超级用户功能,将应用的服务主体添加到超级用户组。超级用户身份可绕过许可证限制,执行文档撤销等管理操作。

验证要点

  • 检查令牌声明:用户流的令牌应包含scp声明(用户权限),应用流的令牌应包含roles声明(应用权限)
  • 确认AIP超级用户组已正确包含应用服务主体
  • 确认用户或应用拥有的权限覆盖文档撤销所需的操作范围

内容的提问来源于stack exchange,提问作者Jamey S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:35:04