Entra ID客户端凭据模式下token中oid来源及Power Automate适配疑问
oid声明来源及Power Automate授权疑问 我在Azure中拥有一个应用注册:
Application (client) ID: aeb***f61 Object ID: f3f***1d9 Directory (tenant) ID: 937***7d1
我正在使用Postman进行客户端原型开发,通过以下授权设置成功获取令牌:
Grant type: Client Credentials Access Token URL: https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/token Client ID: {{clientid}} Client Secret: {{clientsecret}} Scope: {{scope}}
获取到的令牌中包含oid声明,我知道它代表Object ID,但该值既不是应用ID、应用的Object ID,也不是我的Entra ID用户ID(Postman中未配置用户ID):
{ "aud": "https://service.flow.microsoft.com/", "iss": "https://sts.windows.net/937***7d1/", "iat": 1714630709, "nbf": 1714630709, "exp": 1714634609, "aio": "E2N***AQA=", "appid": "aeb***f61", "appidacr": "1", "idp": "https://sts.windows.net/937***7d1/", "idtyp": "app", "oid": "266***b55", "rh": "0.A***QA.", "sub": "266***b55", "tid": "937***7d1", "uti": "OVe***LAA", "ver": "1.0" }
请问这个266***b55 GUID来自哪里?
我提出该问题的原因是:我想要保护一个Power Automation Cloud Flow服务(由HTTP请求触发),在“When a HTTP Request Received”步骤中,我将“Who can trigger the flow”设置为“Specific users in my tenant”,此时只有将“Allowed users”设置为266***b55才能成功触发,其他情况均返回403。可见Cloud Flow的实现依赖该声明,但我不清楚其来源,无法基于此制定安全策略(怀疑它是所有应用通用的或Azure内置服务的Object ID)。
这个oid对应的是应用注册在租户内的服务主体Object ID。
当你在Entra ID中创建应用注册时,会自动在当前租户生成一个对应的服务主体——应用注册是跨租户的应用定义,而服务主体是应用在特定租户内的身份实例,二者拥有独立的Object ID:
- 应用注册页面显示的
Object ID是应用对象(Application Object)的ID,用于定义应用的元数据; - 令牌中的
oid则是服务主体(Service Principal)的ID,是应用在租户内进行身份验证时的实际身份标识。
在Power Automate的场景中,当你用客户端凭据流获取的令牌触发Flow时,Flow识别的是服务主体的身份,因此必须将该服务主体的Object ID添加到“Allowed users”列表中才能通过授权验证。
你可以通过以下方式验证这个值:在Entra ID的企业应用页面中,找到与你的应用注册名称匹配的条目,查看它的Object ID,这个值就会和令牌中的oid一致。
内容的提问来源于stack exchange,提问作者g.pickardou

