Tipi di app per l'endpoint v2.0 di Azure Active DirectoryApp types for the Azure Active Directory v2.0 endpoint

L'endpoint v2.0 di Azure Active Directory supporta l'autenticazione di un'ampia gamma di architetture di app moderne, basate sui protocolli standard del settore OAuth 2.0 o OpenID Connect.The Azure Active Directory (Azure AD) v2.0 endpoint supports authentication for a variety of modern app architectures, all of them based on industry-standard protocols OAuth 2.0 or OpenID Connect. Questo articolo descrive brevemente i tipi di app che è possibile compilare usando Azure AD v2.0, indipendentemente dal linguaggio o dalla piattaforma preferita.This article describes the types of apps that you can build by using Azure AD v2.0, regardless of your preferred language or platform. Le informazioni contenute in questo articolo consentono di comprendere gli scenari generali prima di iniziare a usare il codice.The information in this article is designed to help you understand high-level scenarios before you start working with the code.

Nota

Non tutti gli scenari e le funzionalità di Azure Active Directory sono supportati dall'endpoint v2.0.The v2.0 endpoint doesn't support all Azure Active Directory scenarios and features. Per determinare se è necessario usare l'endpoint 2.0, vedere l'articolo relativo alle limitazioni della versione 2.0.To determine whether you should use the v2.0 endpoint, read about v2.0 limitations.

Nozioni di baseThe basics

È necessario registrare ogni app che usa l'endpoint v 2.0 nel portale di registrazione delle applicazioni Microsoft.You must register each app that uses the v2.0 endpoint in the Microsoft Application Registration Portal. Il processo di registrazione delle app raccoglie e assegna all'app questi valori:The app registration process collects and assigns these values for your app:

  • Un ID applicazione che identifica l'app in modo univocoAn Application ID that uniquely identifies your app
  • Un URI di reindirizzamento che può essere usato per reindirizzare le risposte all'appA Redirect URI that you can use to direct responses back to your app
  • Altri valori specifici dello scenarioA few other scenario-specific values

Per i dettagli, vedere come registrare un'app.For details, learn how to register an app.

Dopo la registrazione, l'app comunica con Azure AD inviando richieste all'endpoint di Azure AD 2.0.After the app is registered, the app communicates with Azure AD by sending requests to the Azure AD v2.0 endpoint. Microsoft offre framework e librerie open source che gestiscono i dettagli di queste richieste.We provide open-source frameworks and libraries that handle the details of these requests. È sempre possibile implementare personalmente la logica di autenticazione creando richieste a questi endpoint:You also have the option to implement the authentication logic yourself by creating requests to these endpoints:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token

App WebWeb apps

Per le app Web (.NET, PHP, Java, Ruby, Python, Node) accessibili tramite un browser, è possibile eseguire l'accesso utente tramite OpenID Connect.For web apps (.NET, PHP, Java, Ruby, Python, Node) that the user accesses through a browser, you can use OpenID Connect for user sign-in. In OpenID Connect, l'app Web riceve un token ID.In OpenID Connect, the web app receives an ID token. Un token ID è un token di sicurezza che verifica l'identità dell'utente e fornisce informazioni sull'utente sotto forma di attestazioni:An ID token is a security token that verifies the user's identity and provides information about the user in the form of claims:

// Partial raw ID token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cd...

// Partial content of a decoded ID token
{
    "name": "John Smith",
    "email": "john.smith@gmail.com",
    "oid": "d9674823-dffc-4e3f-a6eb-62fe4bd48a58"
    ...
}

Per informazioni su tutti i tipi di token e attestazioni disponibili per un'app, vedere le informazioni di riferimento sui token 2.0.You can learn about all the types of tokens and claims that are available to an app in the v2.0 tokens reference.

Nelle app del server Web, il flusso di autenticazione dell'accesso esegue i passaggi generali seguenti:In web server apps, the sign-in authentication flow takes these high-level steps:

Flusso di autenticazione dell'app Web

È possibile verificare l'identità dell'utente convalidando il token ID con una chiave di firma pubblica ricevuta dall'endpoint 2.0.You can ensure the user's identity by validating the ID token with a public signing key that is received from the v2.0 endpoint. Viene anche impostato un cookie di sessione che può essere usato per identificare l'utente nelle richieste di pagina successive.A session cookie is set, which can be used to identify the user on subsequent page requests.

Per osservare il funzionamento di questo scenario, provare uno degli esempi di codice di accesso per app Web nella sezione Introduzione per la versione 2.0.To see this scenario in action, try one of the web app sign-in code samples in our v2.0 Getting Started section.

Oltre al semplice accesso, un'app per server Web potrebbe dover accedere ad altri servizi Web, ad esempio a un'API REST.In addition to simple sign-in, a web server app might need to access another web service, such as a REST API. In questo caso, l'app per server Web agisce in un flusso di OpenID Connect e OAuth 2.0 combinato, tramite il flusso del codice di autorizzazione OAuth 2.0.In this case, the web server app engages in a combined OpenID Connect and OAuth 2.0 flow, by using the OAuth 2.0 authorization code flow. Per altre informazioni su questo scenario, vedere l'introduzione alle app Web e alle API Web.For more information about this scenario, read about getting started with web apps and Web APIs.

API WebWeb APIs

È possibile usare l'endpoint v2.0 per proteggere i servizi Web, ad esempio l'API Web RESTful dell'app.You can use the v2.0 endpoint to secure web services, such as your app's RESTful Web API. Al posto dei token ID e dei cookie di sessione, un'API Web usa un token di accesso OAuth 2.0 per proteggere i dati e autenticare le richieste in ingresso.Instead of ID tokens and session cookies, a Web API uses an OAuth 2.0 access token to secure its data and to authenticate incoming requests. Il chiamante di un'API Web aggiunge un token di accesso nell'intestazione dell'autorizzazione di una richiesta HTTP come illustrato di seguito:The caller of a Web API appends an access token in the authorization header of an HTTP request, like this:

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...
Accept: application/json
...

L'API Web usa il token di accesso per verificare l'identità del chiamante dell'API ed estrarre informazioni su quest'ultimo dalle attestazioni codificate nel token di accesso.The Web API uses the access token to verify the API caller's identity and to extract information about the caller from claims that are encoded in the access token. Per informazioni su tutti i tipi di token e attestazioni disponibili per un'app, vedere le informazioni di riferimento sui token 2.0.To learn about all the types of tokens and claims that are available to an app, see the v2.0 tokens reference.

Un'API Web può consentire agli utenti di fornire il consenso o rifiutare esplicitamente specifici dati o funzionalità esponendo le autorizzazioni, note anche come ambiti.A Web API can give users the power to opt in or opt out of specific functionality or data by exposing permissions, also known as scopes. Per far sì che un'app chiamante acquisisca l'autorizzazione ad accedere a un ambito, l'utente deve fornire il consenso all'ambito durante un flusso.For a calling app to acquire permission to a scope, the user must consent to the scope during a flow. L'endpoint 2.0 chiede l'autorizzazione all'utente e quindi registra le autorizzazioni nei token di accesso ricevuti dall'API Web.The v2.0 endpoint asks the user for permission, and then records permissions in all access tokens that the Web API receives. L'API Web convalida i token di accesso ricevuti ad ogni chiamata ed esegue i controlli di autorizzazione appropriati.The Web API validates the access tokens it receives on each call and performs authorization checks.

Un'API Web può ricevere token di accesso da tutti i tipi di app, tra cui app per server Web, desktop, per dispositivi mobili, a singola pagina, daemon sul lato server e anche altre API Web.A Web API can receive access tokens from all types of apps, including web server apps, desktop and mobile apps, single-page apps, server-side daemons, and even other Web APIs. Il flusso generale per un'API Web è simile al seguente:The high-level flow for a Web API looks like this:

Flusso di autenticazione dell'API Web

Per informazioni su come proteggere un'API Web con i token di accesso OAuth2, vedere gli esempi di codice dell'API Web nella sezione introduttiva.To learn how to secure a Web API by using OAuth2 access tokens, check out the Web API code samples in our Getting Started section.

In molti casi, le API Web devono anche effettuare richieste in uscita ad altre API Web downstream protette da Azure Active Directory.In many cases, web APIs also need to make outbound requests to other downstream web APIs secured by Azure Active Directory. A questo scopo, le API Web possono ricorrere al flusso Per conto di di Azure AD, che consente all'API Web di scambiare un token di accesso in ingresso con un altro token di accesso da usare in richieste in uscita.To do so, web APIs can take advantage of Azure AD's On Behalf Of flow, which allows the web API to exchange an incoming access token for another access token to be used in outbound requests. Il flusso Per conto di dell'endpoint 2.0 è descritto nel dettaglio qui.The v2.0 endpoint's On Behalf Of flow is described in detail here.

App per dispositivi mobili e nativeMobile and native apps

Le app installate in un dispositivo, ad esempio app desktop e per dispositivi mobili, devono spesso accedere a servizi back-end o ad API Web che archiviano i dati ed eseguono funzioni per conto dell'utente.Device-installed apps, such as mobile and desktop apps, often need to access back-end services or Web APIs that store data and perform functions on behalf of a user. Queste app possono aggiungere accesso e autorizzazioni ai servizi back-end tramite il flusso del codice di autorizzazione OAuth 2.0.These apps can add sign-in and authorization to back-end services by using the OAuth 2.0 authorization code flow.

In questo flusso, l'app riceve un codice di autorizzazione dall'endpoint 2.0 quando l'utente effettua l'accesso.In this flow, the app receives an authorization code from the v2.0 endpoint when the user signs in. Questo codice rappresenta l'autorizzazione dell'app a chiamare servizi back-end per conto dell'utente che ha eseguito l'accesso.The authorization code represents the app's permission to call back-end services on behalf of the user who is signed in. L'app può scambiare il codice di autorizzazione in background con un token di accesso OAuth 2.0 e un token di aggiornamento.The app can exchange the authorization code in the background for an OAuth 2.0 access token and a refresh token. L'app può usare il token di accesso per l'autenticazione all'API Web nelle richieste HTTP e il token di aggiornamento per ottenere nuovi token di accesso quando i precedenti scadono.The app can use the access token to authenticate to Web APIs in HTTP requests, and use the refresh token to get new access tokens when older access tokens expire.

Flusso di autenticazione dell'app nativa

App a singola pagina (JavaScript)Single-page apps (JavaScript)

Molte app moderne hanno un front-end dell'app a singola pagina scritto principalmente in JavaScript.Many modern apps have a single-page app front end that primarily is written in JavaScript. Il front-end viene scritto spesso usando un framework come AngularJS, Ember.js o Durandal.Often, it's written by using a framework like AngularJS, Ember.js, or Durandal.js. L'endpoint di Azure AD 2.0 supporta queste app tramite il flusso implicito OAuth 2.0.The Azure AD v2.0 endpoint supports these apps by using the OAuth 2.0 implicit flow.

In questo flusso, l'app riceve i token direttamente dall'endpoint di autorizzazione 2.0, senza eseguire scambi tra server.In this flow, the app receives tokens directly from the v2.0 authorize endpoint, without any server-to-server exchanges. In questo modo, tutta la logica di autenticazione e gestione della sessione avviene interamente nel client JavaScript, senza eseguire reindirizzamenti a pagine aggiuntive.All authentication logic and session handling takes place entirely in the JavaScript client, without extra page redirects.

Flusso di autenticazione implicita

Per visualizzare questo scenario, provare uno degli esempi di codice di applicazione a singola pagina nella sezione introduttiva.To see this scenario in action, try one of the single-page app code samples in our Getting Started section.

App daemon e lato serverDaemons and server-side apps

Anche le app che contengono processi a esecuzione prolungata o che non prevedono l'interazione con l'utente necessitano di un modo per accedere alle risorse protette, ad esempio le API Web.Apps that have long-running processes or that operate without interaction with a user also need a way to access secured resources, such as Web APIs. Queste app possono autenticarsi e ottenere i token usando l'identità dell'app, anziché un'identità delegata dell'utente, con il flusso delle credenziali client di OAuth 2.0.These apps can authenticate and get tokens by using the app's identity, rather than a user's delegated identity, with the OAuth 2.0 client credentials flow.

In questo flusso, l'app interagisce direttamente con l'endpoint /token per ottenere gli endpoint:In this flow, the app interacts directly with the /token endpoint to obtain endpoints:

Flusso di autenticazione dell'app daemon

Per compilare un'app daemon, vedere la documentazione sulle credenziali client nella sezione Introduzione oppure provare un'app di esempio .NET.To build a daemon app, see the client credentials documentation in our Getting Started section, or try a .NET sample app.