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

Azure应用注册:如何为客户端密钥/证书限制API角色访问?

解决Microsoft Identity Platform API角色分配问题

你的思路方向是对的,但混淆了客户端身份凭证(密钥/证书)和应用角色分配的逻辑:密钥/证书只是客户端用来证明自身身份的工具,角色是直接分配给客户端应用本身的,不是绑定到密钥或证书上。

正确的操作流程

  • 首先确认你的API应用注册已创建好只读、读写两个应用角色。
  • 找到调用API的客户端应用注册:
    1. 进入客户端应用的「API权限」页面
    2. 点击「添加权限」→ 选择「我的API」,找到你的目标API
    3. 在「应用权限」分类下(注意是应用权限,不是委派权限)选择对应的角色(只读或读写),完成添加
    4. 点击「授予管理员同意」(应用角色必须经过管理员同意才能生效)

API端权限校验

客户端用密钥/证书获取令牌时,Azure AD会自动把该客户端已分配的角色放到令牌的roles声明里。你的API需要在每个端点的逻辑里校验这个声明:

// ASP.NET Core示例:按角色限制端点访问
[Authorize(Roles = "读写")]
[HttpPost("/api/write-data")]
public IActionResult WriteData()
{
    // 仅拥有读写角色的客户端可访问
    return Ok();
}

[Authorize(Roles = "只读,读写")]
[HttpGet("/api/read-data")]
public IActionResult ReadData()
{
    // 拥有只读或读写角色的客户端可访问
    return Ok();
}

关键说明

  • 同一个客户端应用的所有密钥/证书共享该应用的角色权限,因为密钥只是身份验证的凭证,不单独关联权限。如果需要不同的权限,应该创建多个客户端应用注册,分别分配不同角色。
  • 确保API的身份验证配置正确,能正确解析Azure AD颁发的令牌并提取roles声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:30:02