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

通过Azure应用注册实现WebAPI范围授权的技术问询

关于Azure应用注册中ApiApp授权配置的实操指南

嘿,我来帮你梳理下你现在这套Azure应用注册授权的配置逻辑,以及后续要让ClientApp正常调用ApiApp需要做的操作:

一、先拆解你ApiApp清单里的权限配置

你在ApiApp的清单中添加的这段oauth2Permissions配置,是给ApiApp定义了一个用户委派型的管理员权限,每个字段的作用我给你划重点:

  • adminConsentDescription/adminConsentDisplayName:这是给租户管理员看的权限说明,管理员在同意ClientApp访问ApiApp时会看到这些文本,用来明确这个权限的作用
  • id:这个GUID是该权限的唯一标识,后续ClientApp请求权限时,无论是通过ID还是value字段都能定位到它
  • isEnabled:设为true才会让这个权限生效,要是设成false就等于白配置了
  • type:这里填User,说明这是用户委派权限——意思是ClientApp需要以某个用户的身份来获取这个权限,然后才能访问ApiApp;如果需要让ClientApp以自身身份(不需要用户参与)访问,就得改成Application
  • userConsentDescription/userConsentDisplayName:如果允许普通用户自己同意这个权限,用户会看到这些文本,但考虑到这是管理员权限,通常建议只开放管理员同意,避免普通用户获取过高权限
  • value:权限的唯一标识字符串(你写的"Adm..."),后续请求权限的scope参数会用到它

二、ClientApp侧必须做的配置步骤

要让ClientApp能请求这个权限并访问ApiApp,你得在ClientApp的应用注册里做这些操作:

  1. 登录Azure门户,找到ClientApp的应用注册,进入API权限页面
  2. 点击添加权限,选择我的API,找到你的ApiApp
  3. 勾选你之前定义的Admin权限,然后点击添加
  4. 因为这是管理员权限,记得点击授予管理员同意(如果是多租户应用,需要租户管理员操作;单租户的话你自己就能搞定)

三、调用ApiApp时的授权流程示例

当ClientApp要调用ApiApp时,得先拿到包含这个权限的AccessToken,举个授权码流程的例子:

  • 请求授权码的时候,scope参数要写成api://<ApiApp的ClientID>/<权限的value>,比如api://12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx/AdmFullAccess
  • 拿到AccessToken后,你可以解码看看scp字段,里面应该包含你定义的权限值,ApiApp就能通过验证这个字段来判断调用者是否有管理员权限

四、常见问题排查点

  • 如果权限不生效,先检查AccessToken的aud字段是不是ApiApp的ClientID,要是不对说明请求的目标API错了
  • 要是scp字段里没有你的权限值,大概率是ClientApp的权限没被授予,或者请求scope的时候写错了
  • 如果需要应用级权限(不需要用户登录),记得把ApiApp里的type改成Application,同时在ClientApp的API权限里选择应用权限类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:10:48