Anwendungs- und Dienstprinzipalobjekte in Azure Active DirectoryApplication and service principal objects in Azure Active Directory

In diesem Artikel werden die Anwendungsregistrierung, Anwendungsobjekte und Dienstprinzipale in Azure Active Directory mit ihren Eigenschaften, Verwendungsmöglichkeiten und den wechselseitigen Beziehungen beschrieben.This article describes application registration, application objects, and service principals in Azure Active Directory: what they are, how they're used, and how they are related to each other. Außerdem wird ein Beispielszenario mit mehreren Mandanten vorgestellt, um die Beziehung zwischen dem Anwendungsobjekt einer Anwendung und den entsprechenden Dienstprinzipalobjekten zu veranschaulichen.A multi-tenant example scenario is also presented to illustrate the relationship between an application's application object and corresponding service principal objects.

AnwendungsregistrierungApplication registration

Um die Identitäts- und Zugriffsverwaltungsfunktionen an Azure AD zu delegieren, muss eine Anwendung bei einem Azure AD-Mandanten registriert werden.In order to delegate Identity and Access Management functions to Azure AD, an application must be registered with an Azure AD tenant. Wenn Sie Ihre Anwendung bei Azure AD registrieren, erstellen Sie eine Identitätskonfiguration für Ihre Anwendung, die die Integration in Azure AD ermöglicht.When you register your application with Azure AD, you are creating an identity configuration for your application that allows it to integrate with Azure AD. Wenn Sie eine App im Azure-Portal registrieren, wählen Sie aus, ob es sich um einen Mandanten (Zugriff nur in Ihrem Mandanten möglich) oder um mehrere Mandanten (Zugriff in anderen Mandanten möglich) handelt. Optional können Sie auch einen Umleitungs-URI festlegen, an den das Zugriffstoken gesendet wird.When you register an app in the Azure portal, you choose whether it's a single tenant (only accessible in your tenant) or multi-tenant (accessible in other tenants) and can optionally set a redirect URI (where the access token is sent to).

Screenshot des Bereichs „Anwendung registrieren“ im Azure-Portal

Wenn Sie die App-Registrierung abgeschlossen haben, verfügen Sie über eine global eindeutige Instanz der App (das Anwendungsobjekt), die sich in Ihrem Basismandanten oder -verzeichnis befindet.When you've completed the app registration, you have a globally unique instance of the app (the application object) which lives within your home tenant or directory. Außerdem verfügen Sie über eine global eindeutige ID für Ihre App (App- oder Client-ID).You also have a globally unique ID for your app (the app or client ID). Im Portal können Sie dann Geheimnisse oder Zertifikate und Geltungsbereiche hinzufügen, damit Ihre App funktioniert. Sie können auch das Branding Ihrer App im Anmeldedialogfeld anpassen und vieles mehr.In the portal, you can then add secrets or certificates and scopes to make your app work, customize the branding of your app in the sign-in dialog, and more.

Wenn Sie eine Anwendung im Portal registrieren, werden automatisch ein Anwendungsobjekt sowie ein Dienstprinzipalobjekt in Ihrem Basismandanten erstellt.If you register an application in the portal, an application object as well as a service principal object are automatically created in your home tenant. Wenn Sie eine Anwendung mit den Microsoft Graph-APIs registrieren/erstellen, wird das Dienstprinzipalobjekt in einem separaten Schritt erstellt.If you register/create an application using the Microsoft Graph APIs, creating the service principal object is a separate step.

AnwendungsobjektApplication object

Eine Azure AD-Anwendung wird durch ein einziges, eindeutiges Anwendungsobjekt definiert, das sich im Azure AD-Mandanten befindet, bei dem die Anwendung registriert wurde (der sogenannte „Basis“-Mandant der Anwendung).An Azure AD application is defined by its one and only application object, which resides in the Azure AD tenant where the application was registered (known as the application's "home" tenant). Ein Anwendungsobjekt wird als Vorlage bzw. Blaupause zum Erstellen eines oder mehrerer Dienstprinzipalobjekte verwendet.An application object is used as a template or blueprint to create one or more service principal objects. Ein Dienstprinzipal wird in jedem Mandanten erstellt, in dem die Anwendung verwendet wird.A service principal is created in every tenant where the application is used. Vergleichbar einer Klasse in der objektorientierten Programmierung hat das Anwendungsobjekt einige statische Eigenschaften, die auf alle erstellten Dienstprinzipale (oder Anwendungsinstanzen) angewendet werden.Similar to a class in object-oriented programming, the application object has some static properties that are applied to all the created service principals (or application instances).

Das Anwendungsobjekt beschreibt drei Aspekte einer Anwendung: das Ausstellen von Token durch den Dienst für den Zugriff auf die Anwendung, die Ressourcen, auf die die Anwendung möglicherweise zugreifen muss, und die Aktionen, die die Anwendung ausführen kann.The application object describes three aspects of an application: how the service can issue tokens in order to access the application, resources that the application might need to access, and the actions that the application can take.

Das Blatt App-Registrierungen im Azure-Portal wird zum Auflisten und Verwalten der Anwendungsobjekte in Ihrem Basismandanten verwendet.The App registrations blade in the Azure portal is used to list and manage the application objects in your home tenant.

Blatt „App-Registrierungen“

Die Application-Entität von Microsoft Graph definiert das Schema für die Eigenschaften eines Anwendungsobjekts.The Microsoft Graph Application entity defines the schema for an application object's properties.

DienstprinzipalobjektService principal object

Um auf Ressourcen zugreifen zu können, die von einem Azure AD-Mandanten geschützt werden, muss die Entität, die Zugriff benötigt, durch einen Sicherheitsprinzipal dargestellt werden.To access resources that are secured by an Azure AD tenant, the entity that requires access must be represented by a security principal. Diese Anforderung gilt für Benutzer (Benutzerprinzipal) und Anwendungen (Dienstprinzipal).This requirement is true for both users (user principal) and applications (service principal). Der Sicherheitsprinzipal definiert die Zugriffsrichtlinie und Berechtigungen für den Benutzer/die Anwendung im Azure AD-Mandanten.The security principal defines the access policy and permissions for the user/application in the Azure AD tenant. Dies aktiviert die Kernfunktionen wie die Authentifizierung des Benutzers/der Anwendung während der Anmeldung und die Autorisierung beim Zugriff auf Ressourcen.This enables core features such as authentication of the user/application during sign-in, and authorization during resource access.

Ein Dienstprinzipal ist die lokale Darstellung (bzw. Anwendungsinstanz) eines globalen Anwendungsobjekts in einem einzelnen Mandanten oder Verzeichnis.A service principal is the local representation, or application instance, of a global application object in a single tenant or directory. Ein Dienstprinzipal ist eine konkrete Instanz, die aus dem Anwendungsobjekt erstellt wird und bestimmte Eigenschaften von diesem Anwendungsobjekt erbt.A service principal is a concrete instance created from the application object and inherits certain properties from that application object. Ein Dienstprinzipal wird in jedem Mandanten erstellt, in dem die Anwendung verwendet wird, und verweist auf das global eindeutige Anwendungsobjekt.A service principal is created in each tenant where the application is used and references the globally unique app object. Das Dienstprinzipalobjekt definiert, was die App tatsächlich im jeweiligen Mandanten ausführen kann, wer auf die App zugreifen kann und auf welche Ressourcen die App zugreifen kann.The service principal object defines what the app can actually do in the specific tenant, who can access the app, and what resources the app can access.

Wenn eine Anwendung die Berechtigung zum Zugriff auf Ressourcen in einem Mandanten erhält (bei der Registrierung oder Zustimmung), wird ein Dienstprinzipalobjekt erstellt.When an application is given permission to access resources in a tenant (upon registration or consent), a service principal object is created. Sie können auch mit Azure PowerShell, der Azure-Befehlszeilenschnittstelle, Microsoft Graph, im Azure-Portal und mit anderen Tools Dienstprinzipalobjekte in einem Mandanten erstellen.You can also create service principal objects in a tenant using Azure PowerShell, Azure CLI, Microsoft Graph, the Azure portal, and other tools. Wenn Sie das Portal verwenden, wird beim Registrieren einer Anwendung automatisch ein Dienstprinzipal erstellt.When using the portal, a service principal is created automatically when you register an application.

Auf dem Blatt Unternehmensanwendungen im Portal werden die Dienstprinzipale in einem Mandanten aufgelistet und verwaltet.The Enterprise applications blade in the portal is used to list and manage the service principals in a tenant. Sie können die Berechtigungen des Dienstprinzipals, die vom Benutzer genehmigten Berechtigungen, die Benutzer, die diese Genehmigung erteilt haben, die Anmeldeinformationen und mehr anzeigen.You can see the service principal's permissions, user consented permissions, which users have done that consent, sign in information, and more.

Blatt „Unternehmens-Apps“

Die ServicePrincipal-Entität von Microsoft Graph definiert das Schema für die Eigenschaften eines Dienstprinzipalobjekts.The Microsoft Graph ServicePrincipal entity defines the schema for a service principal object's properties.

Beziehung zwischen Anwendungsobjekten und DienstprinzipalenRelationship between application objects and service principals

Das Anwendungsobjekt ist die globale Darstellung Ihrer Anwendung für die Verwendung bei allen Mandanten. Der Dienstprinzipal ist die lokale Darstellung für die Verwendung in einem bestimmten Mandanten.The application object is the global representation of your application for use across all tenants, and the service principal is the local representation for use in a specific tenant.

Das Anwendungsobjekt fungiert als Vorlage, aus der allgemeine und Standardeigenschaften zur Verwendung im entsprechenden Dienstprinzipal abgeleitet werden.The application object serves as the template from which common and default properties are derived for use in creating corresponding service principal objects. Für ein Anwendungsobjekt bestehen daher eine 1:1-Beziehung mit der Softwareanwendung und eine 1:viele-Beziehung mit den entsprechenden Dienstprinzipalobjekten.An application object therefore has a 1:1 relationship with the software application, and a 1:many relationship with its corresponding service principal object(s).

Ein Dienstprinzipal muss in jedem Mandanten erstellt werden, in dem die Anwendung verwendet wird. Er ermöglicht, eine Identität für die Anmeldung und/oder den Zugriff auf vom Mandanten gesicherte Ressourcen einzurichten.A service principal must be created in each tenant where the application is used, enabling it to establish an identity for sign-in and/or access to resources being secured by the tenant. Eine Einzelmandantenanwendung weist nur einen Dienstprinzipal (im eigenen Heimmandanten) auf, der während der Anwendungsregistrierung erstellt und für die Verwendung autorisiert wird.A single-tenant application has only one service principal (in its home tenant), created and consented for use during application registration. Für eine Webanwendung/API mit mehreren Mandanten muss außerdem in jedem Mandanten ein Dienstprinzipal erstellt werden, in dem ein Benutzer aus diesem Mandanten der Verwendung zugestimmt hat.A multi-tenant Web application/API also has a service principal created in each tenant where a user from that tenant has consented to its use.

Hinweis

Alle Änderungen, die Sie an Ihrem Anwendungsobjekt vornehmen, werden auch in seinem Dienstprinzipalobjekt ausschließlich im Home-Mandanten der Anwendung widergespiegelt (der Mandant, für den die Registrierung durchgeführt wurde).Any changes you make to your application object are also reflected in its service principal object in the application's home tenant only (the tenant where it was registered). Bei mehrinstanzenfähigen Anwendungen werden Änderungen am Anwendungsobjekt erst dann in den Dienstprinzipalobjekten von Endkundenmandanten übernommen, wenn der Zugriff über den Anwendungszugriffsbereich entfernt und wieder gewährt wird.For multi-tenant applications, changes to the application object are not reflected in any consumer tenants' service principal objects, until the access is removed through the Application Access Panel and granted again.

Beachten Sie außerdem, dass native Anwendungen standardmäßig als mehrinstanzenfähig registriert werden.Also note that native applications are registered as multi-tenant by default.

BeispielExample

Das folgende Diagramm veranschaulicht die Beziehung zwischen einem Anwendungsobjekt der Anwendung und den entsprechenden Dienstprinzipalobjekten im Kontext einer mehrinstanzenfähigen Beispielanwendung mit dem Namen HR App.The following diagram illustrates the relationship between an application's application object and corresponding service principal objects, in the context of a sample multi-tenant application called HR app. In diesem Beispielszenario werden drei Azure AD-Mandanten verwendet:There are three Azure AD tenants in this example scenario:

  • Adatum: Der Mandant, der von dem Unternehmen verwendet wird, das die Personal-App entwickelt hatAdatum - The tenant used by the company that developed the HR app
  • Contoso: Der Mandant, der von der Organisation Contoso (einem Endkunden der Personal-App) verwendet wirdContoso - The tenant used by the Contoso organization, which is a consumer of the HR app
  • Fabrikam: Der von der Organisation Fabrikam (ebenfalls ein Endkunde der Person-App) verwendete MandantFabrikam - The tenant used by the Fabrikam organization, which also consumes the HR app

Beziehung zwischen einem App-Objekt und einem Dienstprinzipalobjekt

Dieses Beispielszenario:In this example scenario:

SchrittStep BESCHREIBUNGDescription
11 Schritt 1 ist der Prozess zur Erstellung der Anwendungs- und Dienstprinzipalobjekte im Home-Mandanten der Anwendung.Is the process of creating the application and service principal objects in the application's home tenant.
22 Nachdem die Administratoren von Contoso und Fabrikam die Zustimmung erteilt haben, wird im Azure AD-Mandanten des Unternehmens ein Dienstprinzipalobjekt erstellt und mit den Berechtigungen versehen, die vom Administrator gewährt wurden.When Contoso and Fabrikam administrators complete consent, a service principal object is created in their company's Azure AD tenant and assigned the permissions that the administrator granted. Beachten Sie auch, dass die HR App so konfiguriert bzw. entworfen werden kann, dass die Zustimmung für die individuelle Nutzung durch die Benutzer erteilt wird.Also note that the HR app could be configured/designed to allow consent by users for individual use.
33 Die Endkundenmandanten der Personalanwendung (Contoso und Fabrikam) erhalten jeweils ein eigenes Dienstprinzipalobjekt.The consumer tenants of the HR application (Contoso and Fabrikam) each have their own service principal object. Jedes Objekt repräsentiert die Verwendung einer Instanz der Anwendung zur Laufzeit, gesteuert durch die Berechtigungen, die vom jeweiligen Administrator per Zustimmung erteilt wurden.Each represents their use of an instance of the application at runtime, governed by the permissions consented by the respective administrator.

Nächste SchritteNext steps