Tipi di applicazioni per la piattaforma di identità MicrosoftApplication types for the Microsoft identity platform

La piattaforma di identità Microsoft supporta l'autenticazione per un'ampia gamma di architetture di app moderne, tutte basate sui protocolli standard del settore OAuth 2,0 o OpenID Connect.The Microsoft identity platform 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 Microsoft Identity Platform, indipendentemente dal linguaggio o dalla piattaforma preferita.This article describes the types of apps that you can build by using Microsoft identity platform, regardless of your preferred language or platform. Le informazioni sono progettate per semplificare la comprensione degli scenari di alto livello prima di iniziare a usare il codice negli scenari di applicazione.The information is designed to help you understand high-level scenarios before you start working with the code in the application scenarios.

Nozioni di baseThe basics

È necessario registrare ogni app che usa la piattaforma di identità Microsoft nella portale di Azure registrazioni app.You must register each app that uses the Microsoft identity platform in the Azure portal App registrations. 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 (client) che identifica l'app in modo univocoAn Application (client) 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 scenario, ad esempio i tipi di account supportatiA few other scenario-specific values such as supported account types

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

Dopo la registrazione dell'app, l'app comunica con la piattaforma di identità Microsoft inviando richieste all'endpoint.After the app is registered, the app communicates with the Microsoft identity platform by sending requests to the 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 a singola pagina (JavaScript)Single-page apps (JavaScript)

Molte app moderne hanno un front-end dell'app a singola pagina scritto principalmente in JavaScript, spesso con un framework come Angular, React o Vue.Many modern apps have a single-page app front end written primarily in JavaScript, often with a framework like Angular, React, or Vue. La piattaforma Microsoft Identity supporta queste app usando il protocollo OpenID Connect per l'autenticazione e il flusso di concessione implicita OAuth 2,0 o il codice di autorizzazione OAuth 2,0 più recente + flusso PKCE per l'autorizzazione (vedere di seguito).The Microsoft identity platform supports these apps by using the OpenID Connect protocol for authentication and either OAuth 2.0 implicit grant flow or the more recent OAuth 2.0 authorization code + PKCE flow for authorization (see below).

Il diagramma di flusso seguente illustra la concessione del codice di autorizzazione OAuth 2,0 (con informazioni dettagliate su PKCE omesso), in cui l'app riceve un codice dall'endpoint della piattaforma di identità Microsoft authorize e lo riscatta per i token e i token di aggiornamento usando le richieste Web tra siti.The flow diagram below demonstrates the OAuth 2.0 authorization code grant (with details around PKCE omitted), where the app receives a code from the Microsoft identity platform authorize endpoint, and redeems it for tokens and refresh tokens using cross-site web requests. Il token di aggiornamento scade ogni 24 ore e l'app deve richiedere un altro codice.The refresh token expires every 24 hours, and the app must request another code. Oltre al token di accesso, un oggetto id_token che rappresenta l'utente che ha eseguito l'accesso all'applicazione client viene in genere richiesto anche tramite lo stesso flusso e/o una richiesta di OpenID Connect separata (non illustrata di seguito).In addition to the access token, an id_token that represents the signed-in user to the client application is typically also requested through the same flow and/or a separate OpenID Connect request (not shown here).

Diagramma che mostra il flusso del codice di autorizzazione OAuth 2 tra un'app a singola pagina e l'endpoint del servizio token di sicurezza.

Per osservare il funzionamento di questo scenario, consultare l’Esercitazione: Eseguire l'accesso degli utenti e chiamare l'API Microsoft Graph da un'applicazione a pagina singola JavaScript usando il flusso del codice di autenticazione.To see this scenario in action, check out the Tutorial: Sign in users and call the Microsoft Graph API from a JavaScript SPA using auth code flow.

Flusso del codice di autorizzazione e flusso implicitoAuthorization code flow vs. implicit flow

Per la maggior parte dei casi nella cronologia di OAuth 2.0, il flusso implicito era il metodo consigliato per creare app a pagina singola.For most of the history of OAuth 2.0, the implicit flow was the recommended way to build single-page apps. Con la rimozione dei cookie di terze parti e la maggiore attenzione posta sui problemi di sicurezza relativi al flusso implicito, è stato adottato il flusso del codice di autorizzazione per le app a pagina singola.With the removal of third-party cookies and greater attention paid to security concerns around the implicit flow, we've moved to the authorization code flow for single-page apps.

Per garantire la compatibilità dell'app in Safari e in altri browser compatibili con le funzionalità di privacy, non è più consigliabile usare il flusso implicito ma si consiglia invece di utilizzare il flusso del codice di autorizzazione.To ensure compatibility of your app in Safari and other privacy-conscious browsers, we no longer recommend use of the implicit flow and instead recommend the authorization code flow.

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"
    ...
}

Altre informazioni sui diversi tipi di token usati nella piattaforma di identità Microsoft sono disponibili nelle informazioni di riferimento sui token di accesso e id_tokenFurther details of different types of tokens used in the Microsoft identity platform are available in the access token reference and id_token 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:

Mostra il flusso di autenticazione dell'app Web

È possibile verificare l'identità dell'utente convalidando il token ID con una chiave di firma pubblica ricevuta dalla piattaforma di identità Microsoft.You can ensure the user's identity by validating the ID token with a public signing key that is received from the Microsoft identity platform. 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 vedere questo scenario in azione, provare gli esempi di codice nell' app Web che esegue lo scenario degli utenti.To see this scenario in action, try the code samples in the Web app that signs in users scenario.

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 la piattaforma Microsoft Identity per proteggere i servizi Web, ad esempio l'API Web RESTful dell'app.You can use the Microsoft identity platform to secure web services, such as your app's RESTful web API. Le API Web possono essere implementate in numerose piattaforme e linguaggi.Web APIs can be implemented in numerous platforms and languages. Possono inoltre essere implementate usando trigger HTTP in Funzioni di Azure.They can also be implemented using HTTP Triggers in Azure Functions. 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. Altre informazioni sui diversi tipi di token usati nella piattaforma di identità Microsoft sono disponibili nelle informazioni di riferimento sui token di accesso e id_token .Further details of different types of tokens used in the Microsoft identity platform are available in the access token reference and id_token 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. La piattaforma Microsoft Identity chiede all'utente l'autorizzazione e quindi registra le autorizzazioni in tutti i token di accesso ricevuti dall'API Web.The Microsoft identity platform 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:

Mostra il flusso di autenticazione dell'API Web

Per informazioni su come proteggere un'API Web usando i token di accesso OAuth2, vedere gli esempi di codice dell'API Web nello scenario dell'API Web protetta.To learn how to secure a web API by using OAuth2 access tokens, check out the web API code samples in the protected web API scenario.

In molti casi, le API Web devono anche effettuare richieste in uscita ad altre API Web downstream protette da Microsoft Identity Platform.In many cases, web APIs also need to make outbound requests to other downstream web APIs secured by Microsoft identity platform. A questo scopo, le API Web possono ricorrere al flusso On-Behalf-Of, 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 the 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. Per altre informazioni, vedere la piattaforma Microsoft Identity e OAuth 2,0 per conto di Microsoft Flow.For more info, see the Microsoft identity platform and OAuth 2.0 On-Behalf-Of flow.

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 dalla piattaforma di identità Microsoft quando l'utente accede.In this flow, the app receives an authorization code from the Microsoft identity platform 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.

Mostra il flusso di autenticazione dell'app nativa

Nota

Se l'applicazione usa la visualizzazione predefinita di sistema, controllare le informazioni sulla funzionalità "conferma accesso" e il codice di errore AADSTS50199 in Azure ad codici di errore di autenticazione e autorizzazione.If the application uses the default system webview, check the information about "Confirm My Sign-In" functionality and error code AADSTS50199 in Azure AD authentication and authorization error codes.

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. È possibile dimostrare l'identità dell'app usando un certificato o un segreto client.You can prove the app's identity using a client secret or certificate. Per altre informazioni, vedere Applicazione console daemon .NET Core con Microsoft Identity Platform.For more info, see .NET Core daemon console application using Microsoft identity platform.

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

Mostra il flusso di autenticazione dell'app daemon

Per compilare un'app daemon, vedere la documentazione sulle credenziali client oppure provare un'app .NET di esempio.To build a daemon app, see the client credentials documentation, or try a .NET sample app.

Passaggi successiviNext steps

Una volta acquisita familiarità con i tipi di applicazioni supportati da Microsoft Identity Platform, è possibile consultare altre informazioni su OAuth 2.0 e OpenID Connect per ottenere dettagli sui componenti dei protocolli usati dai diversi scenari.Now that you're familiar with the types of applications supported by the Microsoft identity platform, learn more about OAuth 2.0 and OpenID Connect to gain an understanding of the protocol components used by the different scenarios.