category
本文介绍了Microsoft Entra ID中的应用程序注册、应用程序对象和服务主体,它们是什么,如何使用它们,以及它们之间的关系。还提供了一个多租户示例场景,以说明应用程序的应用程序对象和相应的服务主体对象之间的关系。
应用注册
要将身份和访问管理功能委托给Microsoft Entra ID,必须向Microsoft Entra租户注册应用程序。当您使用Microsoft Entra ID注册应用程序时,您正在为您的应用程序创建一个身份配置,使其能够与Microsoft Entra ID.集成。注册应用程序后,您可以选择是单租户还是多租户,并可以选择设置重定向URI。有关注册应用程序的分步说明,请参阅应用程序注册快速入门【pp registration quickstart.】。
完成应用程序注册后,您将拥有一个全局唯一的应用程序实例(应用程序对象),该实例位于您的home租户或目录中。您的应用程序也有一个全球唯一的ID(应用程序/客户端ID)。您可以添加机密或证书和范围以使您的应用程序正常工作,在登录对话框中自定义应用程序的品牌,等等。
如果注册应用程序,则会在您的主租户中自动创建应用程序对象和服务主体对象。如果使用Microsoft Graph API注册/创建应用程序,则创建服务主体对象是一个单独的步骤。
应用程序对象
Microsoft Entra应用程序由其唯一的应用程序对象定义,该对象位于应用程序注册的Microsoft Entra租户(称为应用程序的“主”租户)中。应用程序对象用作模板或蓝图,以创建一个或多个服务主体对象。在使用应用程序的每个租户中创建服务主体。与面向对象编程中的类类似,应用程序对象具有一些静态属性,这些属性应用于所有创建的服务主体(或应用程序实例)。
应用程序对象描述了应用程序的三个方面:
- 服务如何发放令牌以访问应用程序
- 应用程序可能需要访问的资源
- 应用程序可以采取的操作
您可以使用Microsoft Entra管理中心中的应用程序注册页面列出和管理家庭租户中的应用对象。
应用注册面板
Microsoft Graph Application实体[Application entity]定义了应用程序对象属性的架构。
服务主体对象
要访问由Microsoft Entra租户保护的资源,需要访问的实体必须由安全主体【security principal】表示。这一要求适用于用户(用户主体)和应用程序(服务主体)。安全主体定义了Microsoft Entra租户中用户/应用程序的访问策略和权限。这启用了核心功能,例如在登录期间对用户/应用程序进行身份验证,以及在资源访问期间进行授权。
服务主体有三种类型:
- 应用程序【Application 】-这种类型的服务主体是单个租户或目录中全局应用程序对象的本地表示或应用程序实例。在这种情况下,服务主体是从应用程序对象创建的具体实例,并继承了该应用程序对象的某些属性。在使用应用程序的每个租户中创建服务主体,并引用全局唯一的应用程序对象。服务主体对象定义了应用程序在特定租户中实际可以做什么,谁可以访问应用程序,以及应用程序可以访问哪些资源。
当应用程序被授予访问租户中资源的权限时(在注册或同意后),将创建服务主体对象。注册应用程序时,会自动创建服务主体。您还可以使用Azure PowerShell、Azure CLI、Microsoft Graph和其他工具在租户中创建服务主体对象。
- 托管身份【Managed identity】-此类服务主体用于表示托管身份。托管身份消除了开发人员管理凭据的需要。托管身份为应用程序提供了一个身份,以便在连接到支持Microsoft Entra身份验证的资源时使用。启用托管身份后,将在租户中创建表示该托管身份的服务主体。代表托管身份的服务主体可以被授予访问和权限,但不能直接更新或修改。
- 遗留-这种类型的服务主体代表遗留应用程序,即在引入应用程序注册之前创建的应用程序,或通过遗留体验创建的应用。传统服务主体可以具有授权用户可以编辑的凭据、服务主体名称、回复URL和其他属性,但没有关联的应用程序注册。服务主体只能在创建它的租户中使用。
Microsoft Graph ServicePrincipal【ServicePrincipal entity】实体定义了服务主体对象属性的架构。
您可以使用Microsoft Entra管理中心中的企业应用程序页面列出和管理租户中的服务主体。您可以看到服务主体的权限、用户同意的权限、哪些用户已经同意、登录信息等。
企业应用面板
应用程序对象和服务主体之间的关系
应用程序对象是应用程序的全局表示,供所有租户使用,服务主体是特定租户中使用的本地表示。应用程序对象充当模板,从中派生通用和默认属性,用于创建相应的服务主体对象。
应用程序对象具有:
- 与软件应用程序的一对一关系,以及
- 与其对应服务主体对象的一对多关系
必须在使用应用程序的每个租户中创建服务主体,使其能够建立登录和/或访问租户保护的资源的身份。单租户应用程序只有一个服务主体(在其主租户中),在应用程序注册期间创建并同意使用。多租户应用程序还在每个租户中创建了一个服务主体,该租户的用户已同意使用该主体。
列出与应用程序关联的服务主体
您可以找到与应用程序对象关联的服务主体。
浏览器
在Microsoft Entra管理中心,导航到应用程序注册概述。在本地目录中选择托管应用程序。
概览中显示本地目录中托管应用程序选项的屏幕截图。
PowerShell
Using Microsoft Graph PowerShell:
Get-MgServicePrincipal -Filter "appId eq '{AppId}'"
Azure命令行界面
Using Azure CLI:
az ad sp list --filter "appId eq '{AppId}'"
修改和删除应用程序的后果
您对应用程序对象所做的任何更改也只反映在应用程序主租户(注册它的租户)中的服务主体对象中。这意味着删除应用程序对象也将删除其主租户服务主体对象。但是,通过应用程序注册UI还原该应用程序对象不会还原其相应的服务主体。有关删除和恢复应用程序及其服务主体对象的详细信息,请参阅删除和恢复适用程序和服务主体对象。
例子
下图说明了在名为HR app的示例多租户应用程序的上下文中,应用程序的应用程序对象和相应的服务主体对象之间的关系。此示例场景中有三个Microsoft Entra租户:
- Adatum-开发人力资源应用程序的公司使用的租户
- Contoso-Contoso组织使用的租户,该组织是HR应用程序的使用者
- STATE-STATE组织使用的租户,该租户也使用HR应用程序
应用对象和服务主体对象之间的关系
在此示例场景中:
Step | Description |
---|---|
1 | The process of creating the application and service principal objects in the application's home tenant. |
2 | When Contoso and Fabrikam administrators complete consent, a service principal object is created in their company's Microsoft Entra tenant and assigned the permissions that the administrator granted. Also note that the HR app could be configured/designed to allow consent by users for individual use. |
3 | The consumer tenants of the HR application (Contoso and Fabrikam) each have their own service principal object. Each represents their use of an instance of the application at runtime, governed by the permissions consented by the respective administrator. |
下一步
了解如何创建服务主体:
- 登录 发表评论
- 9 次浏览
最新内容
- 1 week 5 days ago
- 2 weeks 6 days ago
- 3 weeks 2 days ago
- 3 weeks 2 days ago
- 3 weeks 5 days ago
- 3 weeks 6 days ago
- 4 weeks ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago