gpt4 book ai didi

azure-active-directory - 天蓝色 : Service Principal ID vs Application ID

转载 作者:行者123 更新时间:2023-12-04 17:06:38 24 4
gpt4 key购买 nike

According to this documentation :应用程序和服务主体显然是两个不同的东西。应用程序是全局身份和服务主体
每个租户/AAD

但是This DocumentationThis Stack Overflow Question建议它们是相同的。

为了使它更加困惑,当我使用 Graph API(来自第一个引用)并通过我的应用程序名称进行查询时:

https://graph.windows.net/<tenantName>/applications?api-version=1.6&$filter=displayName eq '<Apllication Name>'

我看到一个对象 ID、一个应用程序 ID(我认为它们是相同的),但在 Json 中没有服务主体 ID

AppID 和 ServicePrincipalID(以及 ClientID、ObjectID)是什么关系?
谢谢。

最佳答案

简答 :应用程序和服务主体绝对是两个不同的东西(以 1:many 的方式相关,但绝对是不同的对象)。

使用 Azure AD 图形 API

寻找应用。正如你已经提到的问题。

https://graph.windows.net/<tenantName>/applications?api-version=1.6&$filter=displayName eq '<Apllication Name>'

寻找服务负责人
https://graph.windows.net/<tenantName>/servicePrincipals?api-version=1.6&$filter=displayName eq '<Apllication Name>'

json 中需要注意的小事:
  • objectIdobjectType您从上述查询中返回的应用程序对象和服务主体对象将有所不同。
  • 属性如 appIddisplayName是相同的,因为它们与相同的逻辑应用程序相关。

  • 您的问题 - AppID 和 ServicePrincipalID(以及 ClientID、ObjectID)之间的关系是什么

    首先,您问题中的链接 Application and service principal objects in Azure Active Directory , 是理解概念的重要资源。在解释概念方面,我不会比那个文档做得更好,所以如果需要,请多读一遍。我会尝试强调一些信息来回答您的具体问题。

    您可以将您从上面的 Azure AD Graph API 检索到的应用程序对象(或参见 Azure 门户 > Azure Active Directory 的应用程序注册部分)视为您正在开发和向 Azure 注册的软件应用程序的单一和主要定义出于身份目的的广告。注意:对于 Multi-Tenancy 应用程序,您只能在“主”租户中找到此应用程序对象,其中应用程序已向 Azure AD 注册。

    另一方面,服务主体(您在 Azure 门户 > Azure Active Directory 的企业应用程序部分看到的内容)将在每个想要使用此应用程序的 Azure AD 租户中创建。对于“家庭”租户,服务主体是在应用注册时创建的,对于所有其他租户,服务主体是在同意时创建的。

    所以总是只有 1 个应用程序对象来表示应用程序。在应用注册时将至少创建 1 个服务主体。虽然,当您开始使用来自多个租户的 Multi-Tenancy 应用程序时,将为每个用户同意应用程序的新 Azure AD 租户创建一个服务主体。因此应用程序和服务主体对象之间的关系变为 1:many
  • appId对于代表此应用程序的单个应用程序对象将是相同的,对于为此应用程序创建的所有服务主体也将是相同的。
  • objectId将是应用程序对象和每个服务主体的唯一值。这唯一地标识了 Azure AD 中的对象。它是所有 Azure AD 对象(甚至是用户、组或 Azure AD 中的任何其他对象)都具有的属性。
  • clientId将与 appId 相同.它将与上下文相关,例如使用 Azure AD 支持的 OAuth 流之一获取 token (例如,在使用 ADAL 库编写代码或使用 REST API 来访问 Azure AD token 端点时)。它不是应用程序或服务主体对象的确切名称的直接属性。

  • 附带说明一下,使您感到困惑的其他两个链接更多的是如何尝试完成工作的文章,而不是深入解释您正在寻找的概念。我认为任何文档都不会明确说应用程序和服务主体是同一件事(因为它们在技术上不是)。虽然我可以理解它有时会让人感到困惑,但当在身份验证相关任务的上下文中松散地引用应用程序时,应用程序和服务主体可以互换使用。

    这里是 another SO post Jean-Marc Prieur 给出了一个很好的回答来讨论类似的话题.它可能无法回答您的所有特定查询,但肯定会触及概念。

    关于azure-active-directory - 天蓝色 : Service Principal ID vs Application ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54066287/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com