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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:33:11