Protocolli v2.0 - OAuth 2.0 e OpenID Connectv2.0 Protocols - OAuth 2.0 & OpenID Connect

L'endpoint v2.0 può usare Azure AD per il servizio IaaS (identity-as-a-service) con protocolli standard del settore, OpenID Connect e OAuth 2.0.The v2.0 endpoint can use Azure AD for identity-as-a-service with industry standard protocols, OpenID Connect and OAuth 2.0. Anche se il servizio è conforme agli standard, possono esistere sottili differenze tra le implementazioni di questi protocolli.While the service is standards-compliant, there can be subtle differences between any two implementations of these protocols. Le informazioni in questo argomento sono utili se si sceglie di scrivere codice inviando e gestendo direttamente le richieste HTTP o di usare una libreria open source di terze parti anziché usare una delle librerie open source di Microsoft.The information here will be useful if you choose to write your code by directly sending & handling HTTP requests or use a 3rd party open source library, rather than using one of our open source libraries.

Nota

Non tutti gli scenari e le funzionalità di Azure Active Directory sono supportati dall'endpoint 2.0.Not all Azure Active Directory scenarios & features are supported by the v2.0 endpoint. Per determinare se è necessario usare l'endpoint v2.0, leggere le informazioni sulle limitazioni v2.0.To determine if you should use the v2.0 endpoint, read about v2.0 limitations.

Nozioni di baseThe Basics

In quasi tutti i flussi di OAuth e OpenID Connect, sono coinvolte nello scambio quattro parti:In nearly all OAuth & OpenID Connect flows, there are four parties involved in the exchange:

Ruoli di OAuth 2.0

  • Il server di autorizzazione è l'endpoint v2.0.The Authorization Server is the v2.0 endpoint. Garantisce l'identità dell'utente, concede e revoca l'accesso alle risorse e rilascia i token.It is responsible for ensuring the user's identity, granting and revoking access to resources, and issuing tokens. Agisce anche come provider di identità: gestisce in modo sicuro le informazioni dell'utente, l'accesso e le relazioni di trust tra le parti di un flusso.It is also known as the identity provider - it securely handles anything to do with the user's information, their access, and the trust relationships between parties in an flow.
  • Il proprietario della risorsa è in genere l'utente finale.The Resource Owner is typically the end-user. È l'entità che possiede i dati e consente a terze parti di accedere a tali dati o risorse.It is the party that owns the data, and has the power to allow third parties to access that data, or resource.
  • Il client OAuth è l'app, identificata dall'ID applicazione. In genere è l'entità con cui interagisce l'utente finale e che richiede i token dal server di autorizzazione.The OAuth Client is your app, identified by its Application Id. It is usually the party that the end-user interacts with, and it requests tokens from the authorization server. Per accedere alla risorsa, il client deve ottenere l'autorizzazione da parte del proprietario della risorsa.The client must be granted permission to access the resource by the resource owner.
  • Il server della risorsa è la posizione in cui si trova la risorsa o i dati.The Resource Server is where the resource or data resides. Consente al server di autorizzazione di autenticare e autorizzare il client OAuth in modo sicuro e usa i token di accesso Bearer per assicurarsi che sia garantito l'accesso a una risorsa.It trusts the Authorization Server to securely authenticate and authorize the OAuth Client, and uses Bearer access_tokens to ensure that access to a resource can be granted.

Registrazione delle appApp Registration

Ogni app che usa l'endpoint 2.0 dovrà essere registrata in apps.dev.microsoft.com per poter interagire usando OAuth oppure OpenID Connect.Every app that uses the v2.0 endpoint will need to be registered at apps.dev.microsoft.com before it can interact using OAuth or OpenID Connect. Il processo di registrazione raccoglie e assegna all'app alcuni valori:The app registration process will collect & assign a few values to your app:

  • Un ID applicazione che identifica l'app in modo univocoAn Application Id that uniquely identifies your app
  • Un URI di reindirizzamento o un identificatore di pacchetto che può essere usato per indirizzare le risposte all'appA Redirect URI or Package Identifier that can be used to direct responses back to your app
  • Altri valori specifici dello scenarioA few other scenario-specific values.

Per altri dettagli, vedere Azure Active Directory B2C: registrare l'applicazione.For more details, learn how to register an app.

EndpointEndpoints

Dopo la registrazione, l'app comunica con Azure AD inviando richieste all'endpoint v2.0:Once registered, the app communicates with Azure AD by sending requests to the v2.0 endpoint:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

Dove {tenant} può assumere uno dei quattro diversi valori:Where the {tenant} can take one of four different values:

ValoreValue DescrizioneDescription
common Consente agli utenti con account Microsoft e account aziendali o dell'istituto d'istruzione di Azure Active Directory di accedere all'applicazione.Allows users with both personal Microsoft accounts and work/school accounts from Azure Active Directory to sign into the application.
organizations Consente solo agli utenti con account aziendali o dell'istituto d'istruzione di Azure Active Directory di accedere all'applicazione.Allows only users with work/school accounts from Azure Active Directory to sign into the application.
consumers Consente solo agli utenti con account Microsoft personali (MSA) di accedere all'applicazione.Allows only users with personal Microsoft accounts (MSA) to sign into the application.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 oppure contoso.onmicrosoft.com8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com Consente solo agli utenti con account aziendali o dell'istituto d'istruzione di un determinato tenant di Azure Active Directory di accedere all'applicazione.Allows only users with work/school accounts from a particular Azure Active Directory tenant to sign into the application. È possibile usare il nome di dominio descrittivo del tenant di Azure AD o l'identificatore guid.Either the friendly domain name of the Azure AD tenant or the tenant's guid identifier can be used.

Per altre informazioni sull'interazione con gli endpoint, selezionare un tipo di app di seguito.For more information on how to interact with these endpoints, choose a particular app type below.

TokensTokens

L'implementazione v2.0 di OAuth 0 2.0 e OpenID Connect fa un uso intensivo dei token di connessione, inclusi quelli rappresentati come JWT (Token Web JSON).The v2.0 implementation of OAuth 2.0 and OpenID Connect make extensive use of bearer tokens, including bearer tokens represented as JWTs. Un token di connessione è un token di sicurezza leggero che consente al "portatore" di accedere a una risorsa protetta.A bearer token is a lightweight security token that grants the “bearer” access to a protected resource. In questo senso, per "portatore" si intende qualsiasi parte che sia in grado di presentare il token.In this sense, the “bearer” is any party that can present the token. Anche se il rilascio del token di connessione è condizionato dal completamento del processo di autenticazione in Azure AD, se non vengono adottate le misure necessarie per proteggere il token durante la trasmissione e l'archiviazione, è possibile che venga intercettato e usato da parti non autorizzate.Though a party must first authenticate with Azure AD to receive the bearer token, if the required steps are not taken to secure the token in transmission and storage, it can be intercepted and used by an unintended party. Molti token di sicurezza hanno meccanismi integrati per prevenire l'uso non autorizzato, ma i token di connessione ne sono sprovvisti e devono essere trasportati su un canale protetto, ad esempio Transport Layer Security (HTTPS).While some security tokens have a built-in mechanism for preventing unauthorized parties from using them, bearer tokens do not have this mechanism and must be transported in a secure channel such as transport layer security (HTTPS). Se un token di connessione viene trasmesso senza essere protetto, un utente malintenzionato potrebbe usare un attacco "man in the middle" per acquisire il token e usarlo per l'accesso non autorizzato a una risorsa protetta.If a bearer token is transmitted in the clear, a man-in the middle attack can be used by a malicious party to acquire the token and use it for an unauthorized access to a protected resource. Gli stessi principi di sicurezza si applicano quando un token di connessione viene archiviato o memorizzato nella cache per un uso futuro.The same security principles apply when storing or caching bearer tokens for later use. Assicurarsi sempre che l'app trasmetta e archivi i token di connessione in modo sicuro.Always ensure that your app transmits and stores bearer tokens in a secure manner. Per altre considerazioni sulla sicurezza dei token di connessione, vedere la sezione 5 della specifica RFC 6750.For more security considerations on bearer tokens, see RFC 6750 Section 5.

Altri dettagli sui diversi tipi di token usati nell'endpoint v2.0 sono disponibili nel riferimento al token dell'endpoint v2.0.Further details of different types of tokens used in the v2.0 endpoint is available in the v2.0 endpoint token reference.

ProtocolliProtocols

Se si è pronti vedere alcuni esempi di richieste, iniziare con una delle esercitazioni di seguito.If you're ready to see some example requests, get started with one of the below tutorials. Ognuna corrisponde a uno scenario di autenticazione specifico.Each one corresponds to a particular authentication scenario. Se è necessario determinare quale sia il flusso giusto per l’utente, consultare i tipi di app che è possibile compilare con v2.0.If you need help determining which is the right flow for you, check out the types of apps you can build with the v2.0.