Oggetti applicazione e oggetti entità servizio in Azure Active Directory (Azure AD)Application and service principal objects in Azure Active Directory (Azure AD)

Spesso il significato del termine "applicazione" può essere frainteso quando usato nel contesto di Azure AD.Sometimes the meaning of the term "application" can be misunderstood when used in the context of Azure AD. Questo articolo intende chiarire gli aspetti concettuali e concreti dell'integrazione dell'applicazione di Azure AD, con un esempio di registrazione e consenso per un'applicazione multi-tenant.The goal of this article is to clarify conceptual and concrete aspects of Azure AD application integration, with an illustration of registration and consent for a multi-tenant application.

PanoramicaOverview

Un'applicazione che è stata integrata con Azure AD ha delle implicazioni che vanno oltre l'aspetto del software.An application that has been integrated with Azure AD has implications that go beyond the software aspect. "Applicazione" viene spesso usato come termine concettuale, che fa riferimento non solo al software applicativo, ma anche alla sua registrazione in Azure AD e al suo ruolo nelle "conversazioni" di autenticazione/autorizzazione in fase di runtime."Application" is frequently used as a conceptual term, referring to not only the application software, but also its Azure AD registration and role in authentication/authorization "conversations" at runtime. Per definizione, un'applicazione può funzionare in un ruolo client (che utilizza una risorsa), in un ruolo server di risorse (che espone le API ai client) o in entrambi i ruoli.By definition, an application can function in a client role (consuming a resource), a resource server role (exposing APIs to clients), or even both. Il protocollo di conversazione è definito da un flusso di concessione di autorizzazione OAuth 2.0, consentendo al client e alla risorsa di accedere e proteggere, rispettivamente, i dati di una risorsa.The conversation protocol is defined by an OAuth 2.0 Authorization Grant flow, allowing the client/resource to access/protect a resource's data respectively. Verrà ora approfondito come il modello applicativo di Azure AD rappresenta un'applicazione in fase di progettazione e in fase di esecuzione.Now let's go a level deeper, and see how the Azure AD application model represents an application at design-time and run-time.

Registrazione dell'applicazioneApplication registration

Quando si registra un'applicazione di Azure AD nel portale di Azure, vengono creati due oggetti nel tenant di Azure AD: un oggetto applicazione e un oggetto entità servizio.When you register an Azure AD application in the Azure portal, two objects are created in your Azure AD tenant: an application object, and a service principal object.

Oggetto applicazioneApplication object

Un'applicazione di Azure AD è definita da un solo oggetto applicazione che risiede nel tenant di Azure AD in cui l'applicazione è stata registrata, noto come tenant "home" dell'applicazione.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. L'entità applicativa di Azure AD Graph definisce lo schema per le proprietà di un oggetto applicazione.The Azure AD Graph Application entity defines the schema for an application object's properties.

Oggetto entità servizioService principal object

Per accedere alle risorse protette da un tenant di Azure AD, l'entità che richiede l'accesso deve essere rappresentata da un'entità di sicurezza.In order to access resources that are secured by an Azure AD tenant, the entity that requires access must be represented by a security principal. Questo vale sia per gli utenti (entità utente) che per le applicazioni (entità servizio).This is true for both users (user principal) and applications (service principal). L'entità di sicurezza definisce i criteri di accesso e le autorizzazioni per l'utente/applicazione nel tenant.The security principal defines the access policy and permissions for the user/application in that tenant. Ciò abilita le funzionalità di base, ad esempio l'autenticazione dell'utente/applicazione durante l'accesso e l'autorizzazione durante l'accesso alle risorse.This enables core features such as authentication of the user/application during sign-in, and authorization during resource access.

Quando a un'applicazione viene concesso di accedere alle risorse in un tenant (al momento della registrazione o del consenso), viene creato un oggetto entità servizio.When an application is given permission to access resources in a tenant (upon registration or consent), a service principal object is created. L'entità ServicePrincipal di Azure AD Graph definisce lo schema delle proprietà di un oggetto entità servizio.The Azure AD Graph ServicePrincipal entity defines the schema for a service principal object's properties.

Relazione tra applicazione e entità servizioApplication and service principal relationship

Si può considerare l'oggetto applicazione come la rappresentazione globale dell'applicazione usata in tutti i tenant, e l'entità servizio come la rappresentazione locale usata in uno specifico tenant.Consider the application object as the global representation of your application for use across all tenants, and the service principal as the local representation for use in a specific tenant. L'oggetto applicazione funge da modello da cui derivano le proprietà comuni e predefinite per l'uso nella creazione di oggetti entità servizio corrispondenti.The application object serves as the template from which common and default properties are derived for use in creating corresponding service principal objects. Un oggetto applicazione ha quindi una relazione 1:1 con l'applicazione software e relazioni 1:molti con gli oggetti entità servizio corrispondenti.An application object therefore has a 1:1 relationship with the software application, and a 1:many relationships with its corresponding service principal object(s).

In ogni tenant in cui viene usata l'applicazione è necessario creare un'entità servizio per poter stabilire un'identità per l'iscrizione e/o l'accesso alle risorse che venga protetta da un tenant.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. Un'applicazione single-tenant ha una sola entità servizio (nel relativo tenant principale), creata e autorizzata per essere usata durante la registrazione dell'applicazione.A single-tenant application has only one service principal (in its home tenant), created and consented for use during application registration. Un'applicazione Web/API multi-tenant ha anche un'entità servizio creata in ogni tenant in cui l'utente ha dato il consenso all'uso.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.

Nota

Qualsiasi modifica apportata all'oggetto applicazione verrà riflessa solo nell'oggetto entità servizio nel tenant home dell'applicazione, ovvero nel tenant in cui è stata registrata.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). Per le applicazioni multi-tenant, le modifiche apportate all'oggetto applicazione non vengono riflesse negli oggetti entità servizio dei tenant consumer fino a quando non viene rimosso l'accesso tramite il Pannello di accesso all'applicazione e poi concesso nuovamente.For multi-tenant applications, changes to the application object are not reflected in any consumer tenants' service principal objects, until the access is removed via the Application Access Panel and granted again.

Si noti anche che le applicazioni native sono registrate come multi-tenant per impostazione predefinita.Also note that native applications are registered as multi-tenant by default.

EsempioExample

Il diagramma seguente illustra la relazione tra l'oggetto applicazione e i corrispondenti oggetti entità servizio di un'applicazione, nel contesto di un'applicazione multi-tenant di esempio denominata app HR.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 questo scenario sono presenti tre tenant di Azure AD:There are three Azure AD tenants in this scenario:

  • Adatum, il tenant usato dalla società che ha sviluppato l'app HRAdatum - the tenant used by the company that developed the HR app
  • Contoso, il tenant usato dall'organizzazione Contoso, che utilizza l'app HRContoso - the tenant used by the Contoso organization, which is a consumer of the HR app
  • Fabrikam, il tenant usato dall'organizzazione Fabrikam, che utilizza anch'essa l'app HRFabrikam - the tenant used by the Fabrikam organization, which also consumes the HR app

Relazione tra un oggetto applicazione e un oggetto entità servizio

Nel diagramma qui sopra, il passaggio 1 è il processo di creazione degli oggetti applicazione ed entità servizio nel tenant home dell'applicazione.In the previous diagram, Step 1 is the process of creating the application and service principal objects in the application's home tenant.

Nel passaggio 2, quando gli amministratori di Contoso e Fabrikam completano il consenso, nel tenant di Azure AD della rispettiva società viene creato un oggetto entità servizio a cui vengono assegnate le autorizzazioni concesse dall'amministratore.In Step 2, 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. Si noti anche che l'app HR potrebbe essere configurata/progettata per permettere il consenso da parte di utenti per l'uso individuale.Also note that the HR app could be configured/designed to allow consent by users for individual use.

Nel Passaggio 3, ogni tenant consumer dell'applicazione HR (Contoso e Fabrikam) dispone del proprio oggetto di entità servizio.In Step 3, the consumer tenants of the HR application (Contoso and Fabrikam) each have their own service principal object. Ognuno rappresenta l'uso di un'istanza dell'applicazione in fase di runtime, gestito tramite le autorizzazioni concesse dall'amministratore.Each represents their use of an instance of the application at runtime, governed by the permissions consented by the respective administrator.

Passaggi successiviNext steps

L'oggetto applicazione di un'applicazione è accessibile tramite l'API Graph di Azure AD, l'editor del manifesto dell'applicazione del portale di Azure o i cmdlet PowerShell di Azure AD, come rappresentato dall'Entità applicativa di OData.An application's application object can be accessed via the Azure AD Graph API, the Azure portal's application manifest editor, or Azure AD PowerShell cmdlets, as represented by its OData Application entity.

L'oggetto entità servizio di un'applicazione è accessibile tramite l'API Graph di Azure AD o i cmdlet PowerShell di Azure AD, come rappresentato dall'Entità ServicePrincipal di OData.An application's service principal object can be accessed via the Azure AD Graph API or Azure AD PowerShell cmdlets, as represented by its OData ServicePrincipal entity.

L'Explorer Graph di Azure AD è utile per eseguire query sugli oggetti applicazione ed entità servizio.The Azure AD Graph Explorer is useful for querying both the application and service principal objects.