在我使用 Azure 应用程序注册获得的 Entra ID OpenID 令牌中,生成的访问令牌中的“oid”声明是什么,它来自哪里?

问题描述 投票:0回答:1

我在 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”声明,我知道它代表对象 ID,但这既不是应用程序 id,也不是应用程序的对象 id,也不是我的 Entra ID 用户 id(顺便说一句,在 Postman 中没有配置) )

{
    "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 是从哪里来的?

我为什么问这个?

我想保护此服务(这是一个电力自动化云流,由 http 请求触发)。在“收到 HTTP 请求时”步骤中,我可以将“谁可以触发流”设置为“我的租户中的特定用户” ”,在这种情况下,当我将“允许的用户”设置为“

266***b55
”时,它起作用了,所有其他情况我都得到了 403。所以 Cloud Flow 的实现会寻找这个声明,我只是不知道它来自哪里....所以我不能以此为基础制定安全策略(也许对于所有应用程序或某些Azure内置服务对象ID来说都是通用的)

azure oauth-2.0 azure-active-directory microsoft-entra-id azure-app-registration
1个回答
0
投票

它是调用服务主体的objectID,可以在Entra/Azure Portal中应用程序注册的“企业应用程序端”中找到。

进一步说明:在其他授权类型(例如授权码流)的情况下,它将是发出请求的用户的 objectID,如“oid”的描述所示。 回到客户端凭证流的情况;有根据的猜测是,与应用程序注册相比,企业应用程序是面向外部的,并使用更“全局”的 GUID 来标识自己,应用程序注册是与租户相关的信任。

© www.soinside.com 2019 - 2024. All rights reserved.