App, autorizzazioni e consenso in Azure Active DirectoryApps, permissions, and consent in Azure Active Directory

In Azure Active Directory è possibile aggiungere applicazioni alla directory.Within Azure Active Directory, you can add applications to your directory. Le applicazioni possono variare in base al tipo di applicazione.The applications can vary depending on the type of application. Per visualizzare le applicazioni nel portale classico, selezionare una directory e scegliere le applicazioni.To view applications in the classic portal, select a directory and choose applications.

Importante

Microsoft consiglia di gestire Azure AD usando l'interfaccia di amministrazione di Azure AD nel portale di Azure invece di usare il portale di Azure classico citato nel presente articolo.Microsoft recommends that you manage Azure AD using the Azure AD admin center in the Azure portal instead of using the Azure classic portal referenced in this article.

Tipi di appTypes of apps

  1. App a tenant singoloSingle-tenant apps

    • App a tenant singolo: spesso indicate come app line-of-business (LOB).Single-tenant apps - Often referred to as line-of-business (LOB) apps. Si tratta del caso in cui un utente all'interno dell'organizzazione sviluppa le proprie app e vuole che gli utenti nell'organizzazione siano in grado di accedere a tali app.This is the case where someone within your organization develops their own app, and would like users in the organization to be able to sign in to the app.
    • App del proxy dell'app: quando si espone un'applicazione locale con il proxy dell'app Azure AD, un'app a tenant singolo viene registrata nel tenant (oltre al servizio proxy dell'app).App Proxy apps - When you expose an on-prem application with Azure AD App Proxy, a single-tenant app is registered in your tenant (in addition to the App Proxy service). Questa app è ciò che rappresenta l'applicazione locale per tutte le interazioni cloud (ad esempio, autenticazione).This app is what represents your on-prem application for all cloud interactions (for example, authentication). L'app proxy richiede Azure AD Basic o versione successiva.(App Proxy requires Azure AD Basic or higher.)
  2. App multi-tenantMulti-tenant apps

    • App multi-tenant per cui altri utenti hanno ottenuto il consenso: analoghe ad "app a tenant singolo sviluppate dall'organizzazione".Multi-tenant apps which others can consent to - similar to “single-tenant apps that your organization develops”. La differenza principale (oltre la logica nell'app stessa) è che gli utenti di altri tenant possono ottenere il consenso e accedere all'app.The main difference (besides the logic in the app itself) is that users from other tenants can also consent to and sign in to the app.
    • App multi-tenant sviluppate da terzi per cui Contoso ha ottenuto il consenso,Multi-tenant apps others develop, which Contoso can consent to. o, in breve, "app con consenso". Si tratta del rovescio della medaglia delle "app multi-tenant sviluppate dall'organizzazione".(Or “consented apps”, for short.) This is the flip side of “multi-tenant apps your organization develops”. Quando un'altra organizzazione sviluppa un'app multi-tenant, gli utenti dell'organizzazione possono ottenere il consenso di usare e accedere all'app.When another organization develops a multi-tenant app, users of your organization can consent to the app and sign in to it.
    • App proprietarie di Microsoft: app che rappresentano i servizi Microsoft.Microsoft first-party apps - Apps that represent Microsoft services. Il consenso è subordinato all'iscrizione al servizio.Consent is driven by the fact that you sign up for the service. Per alcune app proprietarie, sono a volte previste esperienze utente e logiche particolari spesso usate quando vengono definiti i criteri per l'accesso all'app.There is sometimes special UX and logic for certain first-party apps that is often used when establishing policies around access to the app.
    • App preintegrate: app disponibili nella raccolta di app di Azure AD, che è possibile aggiungere alla directory per fornire accesso Single Sign-On (e, in alcuni casi, provisioning) alle app SaaS più diffuse.Pre-integrated apps - Apps available in the Azure AD App Gallery, which you can add to your directory to provide single sign-on (and in some cases, provisioning) to popular SaaS apps.
    • Accesso Single Sign-On di Azure AD: SSO "reale", per le app che possono essere integrate con Azure AD, tramite un protocollo di accesso supportato, ad esempio SAML 2.0 oppure OpenID Connect.Azure AD single sign-on: “Real” SSO, for apps that can be integrated with Azure AD, through a supported sign-in protocol such as SAML 2.0 or OpenID Connect. La procedura guidata ne illustra l'impostazione.The wizard walks you through setting it up.
    • Password Single Sign-On: Azure AD archivia in modo sicuro le credenziali dell'utente relative all'app e tali credenziali vengono "inserite" nel modulo di accesso dall'estensione browser di accesso all'app di Azure AD.Password single sign-on: Azure AD securely stores the user’s credentials for the app, and the credentials are “injected” into the sign-in form by the Azure AD App Access browser extension. Scenario noto anche come "insieme di credenziali delle password".Also known as “password vaulting”.

AutorizzazioniPermissions

Quando un'app viene registrata, l'utente che esegue la registrazione (ovvero, lo sviluppatore) definisce le autorizzazioni e le risorse a cui l'app deve avere accesso.When an app is registered, the user performing the app registration (that is, the developer) defines which permissions the app needs access to, and which resources. Le risorse vengono, a loro volta, definite come altre app. Ad esempio, un utente che crea un'app per la lettura dei messaggi di posta elettronica, indicherà che l'app richiede l'autorizzazione per l'accesso alle cassette postali come utente connesso nella risorsa "Office 365 Exchange Online":(The resources are, themselves, defined as other apps.) For example, someone building a mail reader app, would state that their app requires the “Access mailboxes as the signed-in user” permission in the “Office 365 Exchange Online” resource:

Affinché un'app (client) possa richiedere una determinata autorizzazione da un'altra app (risorsa), lo sviluppatore dell'app risorsa definisce le autorizzazioni esistenti.In order for one app (the client) to request a certain permission from another app (the resource), the developer of the resource app defines the permissions that exist. In questo esempio, Microsoft, proprietario dell'app risorsa "Office 365 Exchange Online", ha definito un'autorizzazione per l'accesso alle cassette postali come utente connesso.In our example, Microsoft, the owner of the “Office 365 Exchange Online” resource app, have defined a permission named “Access mailboxes as the signed-in user”.

Quando si definiscono le autorizzazioni, lo sviluppatore di app deve definire se l'autorizzazione può essere concessa o se è necessario il consenso dell'amministratore.When defining permissions, the app developer must define if the permission can be consented to, or if it requires admin consent. In questo modo, gli sviluppatori possono permettere agli utenti di ottenere il consenso alle app in modo indipendente richiedendo solo autorizzazioni con riservatezza ridotta, ma richiedono agli amministratori di concedere il consenso alle autorizzazioni più riservate.This allows developers to allow users to consent on their own to apps requesting only low-sensitivity permissions, but require admins to consent to more sensitive permissions. Ad esempio, l'app risorsa "Azure Active Directory" è stata definita in modo che gli utenti possano ottenere il consenso per le app richiedendo autorizzazioni limitate di sola lettura.For example, the “Azure Active Directory” resource app, has been defined, so users can consent to apps, requesting limited read-only permissions. Tuttavia, il consenso dell'amministratore è obbligatorio per le autorizzazioni di lettura complete e tutte le autorizzazioni di scrittura.However, admin consent is required for full read permissions, and all write permissions.

Poiché i client nativi non sono autenticati, un'app definita come app client nativa può richiedere solo autorizzazioni delegate.Because native clients are not authenticated, an app defined as a native client app can only request delegated permissions. Ciò significa che deve essere sempre presente un utente effettivo quando si ottiene un token.This means that there must always be an actual user involved when obtaining a token. Le app e le API Web (client riservati) devono sempre eseguire l'autenticazione con Azure AD quando ottengono un token di accesso.Web apps and web APIs (confidential clients), must always authenticate with Azure AD when getting an access token. Vale a dire che hanno anche la possibilità di richiedere autorizzazioni di sola app.Meaning they also have the possibility of requesting app-only permissions. Ad esempio, se un servizio back-end deve eseguire l'autenticazione a un altro servizio back-end.For example, if one back-end service needs to authenticate to another back-end service. Le autorizzazioni che richiedono autorizzazioni di sola app richiedono sempre il consenso dell'amministratore.Applications requesting app-only permissions always require administrator consent.

Riepilogo:Summarizing:

  • Un'app (client) indica le autorizzazioni necessarie per altre app (risorse).An app (client) states the permissions it needs for other apps (resources).
  • Un'app (risorsa) indica le autorizzazioni esposte ad altre app (client).An app (resource) states what permissions are exposed to other apps (clients).
  • Un'autorizzazione può essere di tipo sola app o delegata.A permission can be an app-only permission, or a delegated permission.
  • Un'autorizzazione delegata può essere contrassegnata come "consente il consenso dell'utente," o "richiede il consenso dell'amministratore".A delegated permission can be marked as “allows user consent”, or “requires admin consent”.
  • Un'app può comportarsi come un client (dichiarando che richiede le autorizzazioni a una risorsa), come una risorsa (dichiarando le autorizzazioni che espone) o come entrambi.An app can behave as a client (by declaring that it needs permissions to a resource), as a resource (by declaring which permissions it exposes), or as both.

ControlliControls

Di seguito è riportato un elenco dei vari controlli amministratore disponibili per tutti i comportamenti descritti.The following is a list of the different admin controls available for all this behavior. È possibile accedere ai controlli amministratore da Configura nella directory del portale classico.The admin controls can be accessed in the classic portal from configure under the directory.

Nel portale di Azure, in Gestisci, selezionare Impostazioni utente.In the Azure portal, under manage, user settings.

  • È possibile controllare se gli utenti possono ottenere il consenso alle applicazioni:You can control whether users can consent to apps:

Nel portale classico selezionare Gli utenti possono concedere alle applicazioni l'autorizzazione per accedere ai propri dati. In the classic portal, select Users may give applications permissions to access their data.

Nel portale di Azure selezionare Gli utenti possono consentire alle app di accedere ai propri dati.In the Azure portal, select users can allow apps to access their data.

  • È possibile controllare se gli utenti possono registrare le proprie app LOB a tenant singolo: nel portale classico selezionare Gli utenti possono aggiungere applicazioni integrate. You can control whether users can register their own single-tenant LOB apps: In the classic portal select Users may add integrated applications.

Nel portale di Azure selezionare Gli utenti possono consentire alle app di accedere ai propri dati.In the Azure portal, select users can allow apps to access their data.

Nota

Anche se si consente agli utenti di registrare le app LOB a tenant singolo, vi sono limiti alle registrazioni possibili.Even if you do allow users to register single-tenant LOB apps, there are limits to what can be registered.
Ad esempio, per gli sviluppatori che non sono amministratori della directory.For example, developers who are not directory admins.

  • Gli utenti non possono rendere un'app a tenant singolo un'app multi-tenant.Users cannot make a single-tenant app a multi-tenant app.
  • Quando si registrano le app LOB a tenant singolo, gli utenti non possono richiedere autorizzazioni di sola app ad altre app.When registering single-tenant LOB apps, users cannot request app-only permissions to other apps.
  • Quando si registrano le app LOB a tenant singolo, gli utenti non possono richiedere autorizzazioni delegate ad altre app se tali autorizzazioni richiedono il consenso dell'amministratore.When registering single-tenant LOB apps, users cannot request delegated permissions to other apps if those permissions require admin consent.
  • Gli utenti non possono apportare modifiche alle app di cui non sono proprietari.Users cannot make changes to apps that they are not owners of.
  • È possibile controllare se gli utenti possono aggiungere app preintegrate che usano password SSO (ossia "insieme di credenziali delle password") You can control whether users can themselves add pre-integrated apps that use password SSO (aka “password vaulting”)

  • È possibile controllare le condizioni in base alle quali è possibile accedere alle applicazioni (ovvero, accesso condizionale).You can control under which conditions applications can be accessed (that is, conditional access). Tenere presente che questo scenario si applica sia all'app client, sia all'app risorsa.Be aware this applies both to the client app and to the resource app. Indicare quindi di aver impostato i criteri di accesso condizionale che informano che l'app "Office 365 Exchange Online" è accessibile solo da computer conformi.So, say you set a conditional access policy that says that the “Office 365 Exchange Online” app can only be accessed from machines, which are compliant. Questi criteri verranno attivati anche quando un utente tenta di usare un'app client che richiede le autorizzazioni per Exchange Online.This policy will also kick in when a user attempts to use a client app which requests permissions to Exchange Online.

  • Si ha visibilità delle app per le quali è stato concesso il consenso e quelle in uso.You have visibility into which apps have been consented to and which ones are being used.

  1. Quando un utente ottiene il consenso a un'app, nel tenant viene creato un oggetto entità servizio.When a user consents to an app, a ServicePrincipal object is created in the tenant. La creazione dell'entità servizio è inclusa nel report di controllo.ServicePrincipal creation is included in the audit report.
  2. I report dell'attività di accesso indicano a quali app l'utente esegue l'accesso.User sign-in activity reports tell you which app the user is signing in to.

EsempioExample

A titolo di esempio, si consideri l'app "FabrikamMail per Office 365", alla quale si è notato che gli utenti nel tenant dispongono dell'accesso.As an example, let’s take the “FabrikamMail for Office 365” app, which you’ve noticed users in your tenant are signing in to. "FabrikamMail" è un'app di lettura della posta elettronica per Android pubblicata da "Fabrikam, Inc.".“FabrikamMail” is a mail reader app for Android, published by “Fabrikam, Inc.”. Si tratta del caso di app multi-tenant sviluppate da terzi per cui Contoso ha ottenuto il consenso.This falls into the “multi-tenant apps other develop, which Contoso can consent to”.

Se gli utenti dispongono del consenso, ricevono una richiesta di consenso al primo accesso: If users are allowed to consent, they get a consent prompt the first time they sign in:

"Access your mailboxes" (Accedi alle cassette postali) è la stringa di consenso dell'utente per l'autorizzazione per l'accesso alle cassette postali come utente connesso esposta da "Office 365 Exchange Online" (ovvero, Exchange).“Access your mailboxes” is the user-facing consent string for the “Access mailboxes as the signed-in user” permission exposed by “Office 365 Exchange Online” (that is, Exchange).

È possibile visualizzare le autorizzazioni esaminando l'oggetto entità servizio per Exchange (risorsa), aggiunto al momento dell'iscrizione a Office 365.You can see the permissions by looking up the ServicePrincipal object for Exchange (the resource), which was added when you signed up for Office 365. È possibile pensare all'oggetto entità servizio come a un'"istanza" dell'app nel tenant usata per registrare varie configurazioni e opzioni.You can think of the ServicePrincipal object of an “instance” of the app in your tenant, which is used for recording different options and configurations. Per visualizzare questo scenario, usare Get-AzureADServicePrincipal in PowerShell.You can see this by using the Get-AzureADServicePrincipal in PowerShell.

PS C:\> Get-AzureADServicePrincipal -ObjectId 383f7b97-6754-4d3d-9474-3908ebcba1c6 | fl *

DeletionTimeStamp         : 
ObjectId                  : 383f7b97-6754-4d3d-9474-3908ebcba1c6
ObjectType                : ServicePrincipal
AccountEnabled            : True
AppDisplayName            : Office 365 Exchange Online
AppId                     : 00000002-0000-0ff1-ce00-000000000000
AppOwnerTenantId          : 
AppRoleAssignmentRequired : False
AppRoles                  : {...}
DisplayName               : Microsoft.Exchange
ErrorUrl                  : 
Homepage                  : 
KeyCredentials            : {}
LogoutUrl                 : 
Oauth2Permissions         : {...
                            , class OAuth2Permission {
                              AdminConsentDescription : Allows the app to have the same access to mailboxes as the signed-in user via Exchange Web Services.
                              AdminConsentDisplayName : Access mailboxes as the signed-in user via Exchange Web Services
                              Id                      : 3b5f3d61-589b-4a3c-a359-5dd4b5ee5bd5
                              IsEnabled               : True
                              Type                    : User
                              UserConsentDescription  : Allows the app full access to your mailboxes on your behalf.
                              UserConsentDisplayName  : Access your mailboxes
                              Value                   : full_access_as_user
                            },
                            ...}
PasswordCredentials       : {}
PublisherName             : 
ReplyUrl                  : 
SamlMetadataUrl           : 
ServicePrincipalNames     : {00000002-0000-0ff1-ce00-000000000000/outlook.office365.com, 00000002-0000-0ff1-ce00-000000000000/mail.office365.com, 00000002-0000-0ff1-ce00-000000000000/outlook.com, 
                            00000002-0000-0ff1-ce00-000000000000/*.outlook.com...}
Tags                      : {}

Il consenso viene avviato quando l'utente fa clic su "Accept" (Accetto).Consent is initiated when the user clicks “Accept”. Innanzitutto, viene creato un oggetto entità servizio per "FabrikamMail per Office 365" nel tenant.First, a ServicePrincipal object for “FabrikamMail for Office 365” is created in the tenant. L'oggetto sarà come indicato di seguito:The ServicePrincipal looks something like this:

PS C:\> Get-AzureADServicePrincipal -SearchString "FabrikamMail for Office 365" | fl *

DeletionTimeStamp         : 
ObjectId                  : a8b16333-851d-42e8-acd2-eac155849b37
ObjectType                : ServicePrincipal
AccountEnabled            : True
AppDisplayName            : FabrikamMail for Office 365
AppId                     : aba7c072-2267-4031-8960-e7a2db6e0590
AppOwnerTenantId          : 4a4076e0-a70f-41c6-b819-6f9c4a86df89
AppRoleAssignmentRequired : False
AppRoles                  : {}
DisplayName               : FabrikamMail for Office 365
ErrorUrl                  : 
Homepage                  : 
KeyCredentials            : {}
LogoutUrl                 : 
Oauth2Permissions         : {}
PasswordCredentials       : {}
PublisherName             : Fabrikam, Inc.
ReplyUrl                  : 
SamlMetadataUrl           : 
ServicePrincipalNames     : {aba7c072-2267-4031-8960-e7a2db6e0590}
Tags                      : {WindowsAzureActiveDirectoryIntegratedApp}

Il consenso a un'app crea un collegamento Oauth2PermissionGrant tra gli elementi seguenti:Consenting to an app creates an Oauth2PermissionGrant link between the following:

  • Oggetto utentethe user object
  • App client ServicePrincipalName (SPN)the client apps ServicePrincipalName (SPN)
  • App risorsa ServicePrincipalName (SPN)the resource apps ServicePrincipalName (SPN)
  • Autorizzazioni nell'app risorsapermissions in the resource app.

Nel caso di FabrikamMail, sarà simile a quanto segue:In the case of FabrikamMail, it looks something like this:

PS C:\> Get-AzureADUserOAuth2PermissionGrant -ObjectId ddiggle@aadpremiumlab.onmicrosoft.com | fl *

ClientId    : a8b16333-851d-42e8-acd2-eac155849b37
ConsentType : Principal
ExpiryTime  : 05/15/2017 07:02:39 AM
ObjectId    : M2OxqB2F6EKs0urBVYSbN5d7PzhUZz1NlH25COvLocbJjoxkUFfRQauryBKwBWet
PrincipalId : 648c8ec9-5750-41d1-abab-c812b00567ad
ResourceId  : 383f7b97-6754-4d3d-9474-3908ebcba1c6
Scope       : full_access_as_user
StartTime   : 01/01/0001 12:00:00 AM

(ClientId è l'ID dell'oggetto entità servizio di FabrikamMail (quello appena creato), PrincipalId è l'ID dell'oggetto utente (dell'utente che ha concesso il consenso), ResourceId è l'ID dell'oggetto entità servizio di Exchange Scope è l'autorizzazione di Exchange che ha ottenuto il consenso).(ClientId is FabrikamMail’s service principal object ID (the one that just got created), PrincipalId is the user object ID (of the user who consented), ResourceId is Exchange’s service principal object ID, Scope is the permission in Exchange that was consented to).

Se agli utenti non è stato concesso il consenso, visualizzeranno una schermata indicante la necessità di disporre dell'autorizzazione.If users are not allowed to consent, they will see a screen that says that permission is required.