OBO流生成的Bearer Token中出现Application Roles的疑问
OBO流令牌包含用户角色的原因解析
你对文档的理解存在部分偏差:MS Learn提到的“角色仅关联用户主体而非代理应用”,意思是中间服务(代理应用)不需要被分配后端API的Application Roles,但用户本身如果被分配了后端API的Application Roles,这些角色会被包含在OBO生成的访问令牌里。因为OBO流的核心是以用户的身份和权限去调用后端API,所以令牌会携带用户的所有相关权限信息,包括用户被分配的角色。
OBO令牌的权限逻辑:当你通过OBO流换取后端API的访问令牌时,Entra ID会结合两个维度的权限:
- 中间服务拥有的委托权限(即你在Entra ID中给中间服务配置的、访问后端API的Delegated类型权限)
- 当前用户自身的权限属性(包括用户被分配的后端API的Application Roles)
最终生成的令牌会同时包含这两部分信息,确保后端API能基于用户的角色做授权判断。
托管标识无角色不影响的原因:中间服务的托管标识只需要具备调用后端API的委托权限即可,不需要被分配任何Application Roles——因为角色是绑定到用户主体的,而非代理服务。你看到的
Admin角色,本质是当前请求对应的用户被分配的后端API角色,并非中间服务的角色。验证方法:可以用jwt.ms解码这个Bearer Token,查看
oid(对象ID)或sub(主体ID)字段,这个ID应该对应用户的Entra ID对象ID,而非中间服务托管标识的ID,以此确认角色属于用户而非服务。
内容的提问来源于stack exchange,提问作者Jan_V
相关产品推荐
相关产品推荐

