Autorizzare l'accesso ad applicazioni Web con OpenID Connect e Azure Active DirectoryAuthorize access to web applications using OpenID Connect and Azure Active Directory

OpenID Connect è un semplice livello di gestione delle identità basato sul protocollo OAuth 2.0.OpenID Connect is a simple identity layer built on top of the OAuth 2.0 protocol. OAuth 2.0 definisce i meccanismi per ottenere e usare token di accesso per accedere a risorse protette, ma non definisce metodi standard per fornire informazioni relative all'identità.OAuth 2.0 defines mechanisms to obtain and use access tokens to access protected resources, but they do not define standard methods to provide identity information. OpenID Connect implementa l'autenticazione come estensione del processo di autorizzazione di OAuth 2.0.OpenID Connect implements authentication as an extension to the OAuth 2.0 authorization process. Fornisce informazioni sull'utente finale sotto forma di un id_token che verifica l'identità dell'utente e fornisce informazioni di base sul profilo dell'utente.It provides information about the end user in the form of an id_token that verifies the identity of the user and provides basic profile information about the user.

È consigliabile usare OpenID Connect se si compila un'applicazione Web ospitata su un server e accessibile da browser.OpenID Connect is our recommendation if you are building a web application that is hosted on a server and accessed via a browser.

Registrare l'applicazione nel tenant di Active DirectoryRegister your application with your AD tenant

Prima di tutto è necessario registrare l'applicazione nel tenant di Azure Active Directory (Azure AD).First, you will need to register your application with your Azure Active Directory (Azure AD) tenant. Verrà fornito un ID per l'applicazione, abilitandola per ricevere token.This will give you an Application ID for your application, as well as enable it to receive tokens.

  • Accedere al portale di Azure.Sign in to the Azure Portal.
  • Scegliere il tenant di Azure AD facendo clic sull'account nell'angolo superiore destro della pagina.Choose your Azure AD tenant by clicking on your account in the top right corner of the page.
  • Nel riquadro di spostamento a sinistra fare clic su Azure Active Directory.In the left hand navigation pane, click on Azure Active Directory.
  • Fare clic su Registrazioni per l'app e quindi su Aggiungi.Click on App Registrations and click on Add.
  • Seguire le istruzioni e creare una nuova applicazione.Follow the prompts and create a new application. Per questa esercitazione non è rilevante che si tratti di un'applicazione Web o un'applicazione nativa, ma per esempi specifici per le applicazioni Web o native, consultare le guide introduttive.It doesn't matter if it is a web application or a native application for this tutorial, but if you'd like specific examples for web applications or native applications, check out our quickstarts.
    • Per le applicazioni Web fornire l'URL accesso, ovvero l'URL di base dell'app con cui gli utenti possono accedere, ad esempio http://localhost:12345.For Web Applications, provide the Sign-On URL which is the base URL of your app, where users can sign in e.g http://localhost:12345.
    • Per le applicazioni native fornire un URI di reindirizzamento, che Azure AD userà per restituire le risposte dei token.For Native Applications, provide a Redirect URI, which Azure AD will use to return token responses. Immettere un valore specifico per l'applicazione in uso, ad esempio http://MyFirstAADAppEnter a value specific to your application, .e.g http://MyFirstAADApp
  • Dopo avere completato la registrazione, Azure AD assegnerà all'applicazione un identificatore client univoco, l'ID applicazione.Once you've completed registration, Azure AD will assign your application a unique client identifier, the Application ID. Poiché questo valore sarà necessario nelle sezioni successive, copiarlo dalla pagina dell'applicazione.You will need this value in the next sections, so copy it from the application page.

Flusso di autenticazione con OpenID ConnectAuthentication flow using OpenID Connect

Il flusso di accesso di base include i passaggi seguenti: ognuno di essi è descritto in dettaglio di seguito.The most basic sign-in flow contains the following steps - each of them is described in detail below.

Flusso di autenticazione di OpenID Connect

Documento di metadati OpenID ConnectOpenID Connect metadata document

OpenID Connect descrive un documento di metadati che contiene la maggior parte delle informazioni necessarie perché un'applicazione esegua l'accesso.OpenID Connect describes a metadata document that contains most of the information required for an app to perform sign-in. Il documento include informazioni come gli URL da usare e il percorso delle chiavi di firma pubbliche del servizio.This includes information such as the URLs to use and the location of the service's public signing keys. Il documento di metadati OpenID Connect è reperibile all'indirizzo:The OpenID Connect metadata document can be found at:

https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration

I metadati sono un semplice documento JavaScript Object Notation (JSON).The metadata is a simple JavaScript Object Notation (JSON) document. Per un esempio, vedere il frammento di codice seguente.See the following snippet for an example. Il contenuto del frammento di codice è descritto dettagliatamente nelle specifiche di OpenID Connect.The snippet's contents are fully described in the OpenID Connect specification.

{
    "authorization_endpoint": "https://login.microsoftonline.com/common/oauth2/authorize",
    "token_endpoint": "https://login.microsoftonline.com/common/oauth2/token",
    "token_endpoint_auth_methods_supported":
    [
        "client_secret_post",
        "private_key_jwt"
    ],
    "jwks_uri": "https://login.microsoftonline.com/common/discovery/keys"

    ...
}

Inviare la richiesta di accessoSend the sign-in request

Quando l'applicazione Web deve autenticare l'utente, deve indirizzarlo all'endpoint /authorize .When your web application needs to authenticate the user, it must direct the user to the /authorize endpoint. Questa richiesta è simile a quella della prima parte di Flusso del codice di autorizzazione di OAuth 2.0, con alcune importanti differenze:This request is similar to the first leg of the OAuth 2.0 Authorization Code Flow, with a few important distinctions:

  • La richiesta deve includere l'ambito openid nel parametro scope.The request must include the scope openid in the scope parameter.
  • Il parametro response_type deve includere id_token.The response_type parameter must include id_token.
  • La richiesta deve includere il parametro nonce .The request must include the nonce parameter.

Una richiesta di esempio si presenta quindi come segue:So a sample request would look like this:

// Line breaks for legibility only

GET https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=7362CAEA-9CA5-4B43-9BA3-34D7C303EBA7
ParametroParameter DescrizioneDescription
tenanttenant Obbligatoriarequired Il valore {tenant} del percorso della richiesta può essere usato per controllare chi può accedere all'applicazione.The {tenant} value in the path of the request can be used to control who can sign into the application. I valori consentiti sono gli identificatori dei tenant, ad esempio 8eaef023-2b34-4da1-9baa-8bc8c9d6a490, contoso.onmicrosoft.com o common per i token indipendenti dai tenantThe allowed values are tenant identifiers, for example, 8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com or common for tenant-independent tokens
client_idclient_id Obbligatoriarequired ID applicazione assegnato all'app quando è stata registrata in Azure AD.The Application Id assigned to your app when you registered it with Azure AD. ed è reperibile nel portale di Azure.You can find this in the Azure Portal. Fare clic su Azure Active Directory, su Registrazioni per l'app, scegliere l'applicazione e individuarne applicazione nella pagina dell'applicazione.Click Azure Active Directory, click App Registrations, choose the application and locate the Application Id on the application page.
response_typeresponse_type Obbligatoriarequired Deve includere id_token per l'accesso a OpenID Connect.Must include id_token for OpenID Connect sign-in. Può anche includere altri parametri response_type, ad esempio code.It may also include other response_types, such as code.
scopescope Obbligatoriarequired Elenco di ambiti separati da spazi.A space-separated list of scopes. Per OpenID Connect, deve includere l'ambito openidche esegue la conversione all'autorizzazione per l'accesso nell'interfaccia utente di consenso.For OpenID Connect, it must include the scope openid, which translates to the "Sign you in" permission in the consent UI. È anche possibile includere in questa richiesta altri ambiti per richiedere il consenso.You may also include other scopes in this request for requesting consent.
noncenonce Obbligatoriarequired Valore incluso nella richiesta, generata dall'app, che verrà incluso nel id_token risultante come attestazione.A value included in the request, generated by the app, that is included in the resulting id_token as a claim. L'app può verificare questo valore per ridurre gli attacchi di riproduzione del token.The app can then verify this value to mitigate token replay attacks. Il valore è in genere un GUID o una stringa univoca casuale che consente di identificare l'origine della richiesta.The value is typically a randomized, unique string or GUID that can be used to identify the origin of the request.
redirect_uriredirect_uri consigliatorecommended URI di reindirizzamento dell'app dove le risposte di autenticazione possono essere inviate e ricevute dall'app.The redirect_uri of your app, where authentication responses can be sent and received by your app. Deve corrispondere esattamente a uno degli URI di reindirizzamento registrati nel portale, ad eccezione del fatto che deve essere codificato come URL.It must exactly match one of the redirect_uris you registered in the portal, except it must be url encoded.
response_moderesponse_mode Consigliatorecommended Specifica il metodo che deve essere usato per inviare un codice di autorizzazione all'app.Specifies the method that should be used to send the resulting authorization_code back to your app. I valori supportati sono form_post per POST modulo HTTP o fragment per frammento URL.Supported values are form_post for HTTP form post or fragment for URL fragment. Per le applicazioni Web è consigliabile usare response_mode=form_post per assicurare il trasferimento più sicuro dei token nell'applicazione.For web applications, we recommend using response_mode=form_post to ensure the most secure transfer of tokens to your application.
statestate consigliatorecommended Valore incluso nella richiesta che viene restituito nella risposta del token.A value included in the request that is returned in the token response. Può trattarsi di una stringa di qualsiasi contenuto.It can be a string of any content that you wish. Per evitare gli attacchi di richiesta intersito falsa, viene in genere usato un valore univoco generato casualmente.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. Lo stato viene inoltre usato per codificare le informazioni sullo stato dell'utente nell'app prima dell'esecuzione della richiesta di autenticazione, ad esempio la pagina o la vista in cui si trovava.The state is also used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.
promptprompt Facoltativaoptional Indica il tipo di interazione obbligatoria dell'utente.Indicates the type of user interaction that is required. Attualmente gli unici valori validi sono "login", "none" e "consent".Currently, the only valid values are 'login', 'none', and 'consent'. prompt=login forza l'utente a immettere le sue credenziali alla richiesta, negando l'accesso Single Sign-On.prompt=login forces the user to enter their credentials on that request, negating single-sign on. prompt=none è l'opposto: garantisce che all'utente non venga presentata alcuna richiesta interattiva.prompt=none is the opposite - it ensures that the user is not presented with any interactive prompt whatsoever. Se la richiesta non può essere completata automaticamente tramite Single-Sign-On, l'endpoint restituisce un errore.If the request cannot be completed silently via single-sign on, the endpoint returns an error. prompt=consent attiva la finestra di dialogo di consenso di OAuth dopo l'accesso dell'utente, che chiede all'utente di concedere le autorizzazioni all'app.prompt=consent triggers the OAuth consent dialog after the user signs in, asking the user to grant permissions to the app.
login_hintlogin_hint Facoltativaoptional Consente di pre-compilare il campo nome utente/indirizzo di posta elettronica dell'utente nella pagina di accesso, se già si conosce il nome utente.Can be used to pre-fill the username/email address field of the sign-in page for the user, if you know their username ahead of time. Le app usano spesso questo parametro durante la riautenticazione, dopo aver estratto il nome utente da un accesso precedente tramite l'attestazione preferred_username.Often apps use this parameter during reauthentication, having already extracted the username from a previous sign-in using the preferred_username claim.

A questo punto viene chiesto all'utente di immettere le credenziali e completare l'autenticazione.At this point, the user is asked to enter their credentials and complete the authentication.

Risposta di esempioSample response

Una risposta di esempio dopo l'autenticazione dell'utente può avere un aspetto simile al seguente:A sample response, after the user has authenticated, could look like this:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
ParametroParameter DescrizioneDescription
id_tokenid_token id_token richiesto dall'app.The id_token that the app requested. È possibile usare id_token per verificare l'identità dell'utente e avviare una sessione con l'utente.You can use the id_token to verify the user's identity and begin a session with the user.
statestate Valore incluso nella richiesta che viene restituito nella risposta del token.A value included in the request that is also returned in the token response. Per evitare gli attacchi di richiesta intersito falsa, viene in genere usato un valore univoco generato casualmente.A randomly generated unique value is typically used for preventing cross-site request forgery attacks. Lo stato viene inoltre usato per codificare le informazioni sullo stato dell'utente nell'app prima dell'esecuzione della richiesta di autenticazione, ad esempio la pagina o la vista in cui si trovava.The state is also used to encode information about the user's state in the app before the authentication request occurred, such as the page or view they were on.

Risposta di erroreError response

Le risposte di errore possono essere inviate anche a redirect_uri , in modo che l'app possa gestirle adeguatamente:Error responses may also be sent to the redirect_uri so the app can handle them appropriately:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
ParametroParameter DescrizioneDescription
errorerror Stringa di codice di errore che può essere usata per classificare i tipi di errori che si verificano e correggerli.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_descriptionerror_description Messaggio di errore specifico che consente a uno sviluppatore di identificare la causa principale di un errore di autenticazione.A specific error message that can help a developer identify the root cause of an authentication error.

Codici per gli errori dell'endpoint di autorizzazioneError codes for authorization endpoint errors

La tabella seguente descrive i diversi codici errore che possono essere restituiti nel parametro error della risposta di errore.The following table describes the various error codes that can be returned in the error parameter of the error response.

Codice di erroreError Code DescrizioneDescription Azione clientClient Action
invalid_requestinvalid_request Errore del protocollo, ad esempio un parametro obbligatorio mancante.Protocol error, such as a missing required parameter. Correggere e inviare di nuovo la richiesta.Fix and resubmit the request. Si tratta di un errore di sviluppo rilevato in genere durante il test iniziale.This is a development error, and is typically caught during initial testing.
unauthorized_clientunauthorized_client All'applicazione client non è consentito richiedere un codice di autorizzazione.The client application is not permitted to request an authorization code. Si verifica in genere quando l'applicazione client non è registrata in Azure AD o non è stata aggiunta al tenant di Azure AD dell'utente.This usually occurs when the client application is not registered in Azure AD or is not added to the user's Azure AD tenant. L'applicazione può chiedere all'utente di installare l'applicazione e di aggiungerla ad Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.
access_deniedaccess_denied Consenso negato dal proprietario della risorsaResource owner denied consent L'applicazione client può notificare all'utente che non può proseguire a meno che l'utente non acconsenta.The client application can notify the user that it cannot proceed unless the user consents.
unsupported_response_typeunsupported_response_type Il server di autorizzazione non supporta il tipo di risposta nella richiesta.The authorization server does not support the response type in the request. Correggere e inviare di nuovo la richiesta.Fix and resubmit the request. Si tratta di un errore di sviluppo rilevato in genere durante il test iniziale.This is a development error, and is typically caught during initial testing.
server_errorserver_error Errore imprevisto rilevato dal server.The server encountered an unexpected error. ripetere la richiesta.Retry the request. Questi errori possono dipendere da condizioni temporanee.These errors can result from temporary conditions. L'applicazione client può comunicare all'utente che la risposta è stata ritardata a causa di un errore temporaneo.The client application might explain to the user that its response is delayed due to a temporary error.
temporarily_unavailabletemporarily_unavailable Il server è temporaneamente troppo occupato per gestire la richiesta.The server is temporarily too busy to handle the request. ripetere la richiesta.Retry the request. L'applicazione client può comunicare all'utente che la risposta è stata ritardata a causa di una condizione temporanea.The client application might explain to the user that its response is delayed due to a temporary condition.
invalid_resourceinvalid_resource La risorsa di destinazione non è valida perché non esiste, Azure AD non riesce a trovarla o non è attualmente configurata.The target resource is invalid because it does not exist, Azure AD cannot find it, or it is not correctly configured. Indica che la risorsa, se presente, non è stata configurata nel tenant.This indicates the resource, if it exists, has not been configured in the tenant. L'applicazione può chiedere all'utente di installare l'applicazione e di aggiungerla ad Azure AD.The application can prompt the user with instruction for installing the application and adding it to Azure AD.

Convalidare il token IDValidate the id_token

La semplice ricezione di un id_token non è sufficiente per autenticare l'utente. È necessario convalidare la firma e verificare le attestazioni in id_token in base ai requisiti dell'app.Just receiving an id_token is not sufficient to authenticate the user; you must validate the signature and verify the claims in the id_token per your app's requirements. L'endpoint di Azure AD usa i token Web JSON (JWT) e la crittografia a chiave pubblica per firmare i token e verificarne la validità.The Azure AD endpoint uses JSON Web Tokens (JWTs) and public key cryptography to sign tokens and verify that they are valid.

È possibile scegliere di convalidare id_token nel codice client, ma una procedura comune consiste nell'inviare id_token a un server back-end dove verrà eseguita la convalida.You can choose to validate the id_token in client code, but a common practice is to send the id_token to a backend server and perform the validation there. Dopo aver convalidato la firma di id_token, è necessario verificare alcune attestazioni.Once you've validated the signature of the id_token, there are a few claims you are required to verify.

È inoltre consigliabile convalidare attestazioni aggiuntive in base allo scenario.You may also wish to validate additional claims depending on your scenario. Alcune convalide comuni includono:Some common validations include:

  • Garantire che l'utente o l'organizzazione dispongano dell'iscrizione all'app.Ensuring the user/organization has signed up for the app.
  • Garantire che l'utente disponga di autorizzazioni/privilegi adeguati.Ensuring the user has proper authorization/privileges
  • Garantire che sia stato applicato un determinato livello di autenticazione, ad esempio l'autenticazione a più fattori.Ensuring a certain strength of authentication has occurred, such as multi-factor authentication.

Dopo aver completato la convalida di id_token, è possibile avviare una sessione con l'utente e usare le attestazioni in id_token per ottenere informazioni sull'utente nell'app.Once you have validated the id_token, you can begin a session with the user and use the claims in the id_token to obtain information about the user in your app. Queste informazioni possono essere usate per la visualizzazione, i record, le autorizzazioni e così via. Per altre informazioni sui tipi di token e sulle attestazioni, vedere Token e tipi di attestazioni supportati.This information can be used for display, records, authorizations, etc. For more information about the token types and claims, read Supported Token and Claim Types.

Inviare una richiesta di disconnessioneSend a sign-out request

Durante la disconnessione di un utente dall’applicazione, non basta cancellare i cookie dell’applicazione o terminare la sessione con l’utente.When you wish to sign the user out of the app, it is not sufficient to clear your app's cookies or otherwise end the session with the user. È anche necessario reindirizzare l'utente a end_session_endpoint per la disconnessione. In caso contrario l'utente potrà autenticarsi nuovamente all'app senza immettere le credenziali grazie alla presenza di una sessione Single Sign-On valida con l'endpoint di Azure AD.You must also redirect the user to the end_session_endpoint for sign-out. If you fail to do so, the user will be able to reauthenticate to your app without entering their credentials again, because they will have a valid single sign-on session with the Azure AD endpoint.

È sufficiente reindirizzare l'utente all' end_session_endpoint riportato nel documento dei metadati di OpenID:You can simply redirect the user to the end_session_endpoint listed in the OpenID Connect metadata document:

GET https://login.microsoftonline.com/common/oauth2/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
ParametroParameter DescrizioneDescription
post_logout_redirect_uripost_logout_redirect_uri consigliatorecommended URL di destinazione al quale l'utente deve essere reindirizzato dopo la disconnessione.The URL that the user should be redirected to after successful logout. Se omesso, all'utente viene visualizzato un messaggio generico.If not included, the user is shown a generic message.

Single Sign-OutSingle sign-out

Quando si reindirizza l'utente all'end_session_endpoint, Azure AD cancella la sessione dell'utente dal browser.When you redirect the user to the end_session_endpoint, Azure AD clears the user's session from the browser. L'utente può tuttavia essere ancora connesso ad altre applicazioni che usano Azure AD per l'autenticazione.However, the user may still be signed in to other applications that use Azure AD for authentication. Per consentire che tutte le applicazioni eseguano la disconnessione dell'utente simultaneamente, Azure AD invia una richiesta HTTP GET all'oggetto LogoutUrl registrato di tutte le applicazioni a cui l'utente è attualmente connesso.To enable those applications to sign the user out simultaneously, Azure AD sends an HTTP GET request to the registered LogoutUrl of all the applications that the user is currently signed in to. Le applicazioni devono rispondere a questa richiesta cancellando qualsiasi sessione che identifica l'utente e restituendo una risposta 200.Applications must respond to this request by clearing any session that identifies the user and returning a 200 response. Se si vuole supportare l'accesso Single Sign-Out nell'applicazione, è necessario implementare questo tipo di oggetto LogoutUrl nel codice dell'applicazione.If you wish to support single sign out in your application, you must implement such a LogoutUrl in your application's code. È possibile impostare LogoutUrl nel portale di Azure:You can set the LogoutUrl from the Azure portal:

  1. Passare al portale di Azure.Navigate to the Azure Portal.
  2. Fare clic sull'account nell'angolo superiore destro della pagina per scegliere l'istanza di Active Directory.Choose your Active Directory by clicking on your account in the top right corner of the page.
  3. Nel pannello di navigazione a sinistra scegliere Azure Active Directory, quindi scegliere Registrazioni per l'app e selezionare l'applicazione desiderata.From the left hand navigation panel, choose Azure Active Directory, then choose App registrations and select your application.
  4. Fare clic su Proprietà e individuare la casella di testo URL disconnessione.Click on Properties and find the Logout URL text box.

Acquisizione dei tokenToken Acquisition

Molte app Web non solo eseguono l'accesso dell'utente, ma accedono anche a un servizio Web per conto dell'utente tramite OAuth.Many web apps need to not only sign the user in, but also access a web service on behalf of that user using OAuth. Questo scenario combina OpenID Connect per l'autenticazione dell'utente e la contemporanea acquisizione di un authorization_code che può essere usato per ottenere access_tokens con il flusso del codice di autorizzazione di OAuth.This scenario combines OpenID Connect for user authentication while simultaneously acquiring an authorization_code that can be used to get access_tokens using the OAuth Authorization Code Flow.

Ottenere i token di accessoGet Access Tokens

Per acquisire i token di accesso, è necessario modificare la richiesta di accesso precedente:To acquire access tokens, you need to modify the sign-in request from above:

// Line breaks for legibility only

GET https://login.microsoftonline.com/{tenant}/oauth2/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e        // Your registered Application Id
&response_type=id_token+code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F       // Your registered Redirect Uri, url encoded
&response_mode=form_post                              // form_post', or 'fragment'
&scope=openid
&resource=https%3A%2F%2Fservice.contoso.com%2F                                     
&state=12345                                          // Any value, provided by your app
&nonce=678910                                         // Any value, provided by your app

Includendo gli ambiti di autorizzazione nella richiesta e usando response_type=code+id_token, l'endpoint authorize verificherà che l'utente abbia dato il consenso per le autorizzazioni indicate nel parametro di query scope e restituirà all'app un codice di autorizzazione da scambiare con un token di accesso.By including permission scopes in the request and using response_type=code+id_token, the authorize endpoint ensures that the user has consented to the permissions indicated in the scope query parameter, and return your app an authorization code to exchange for an access token.

Risposta con esito positivoSuccessful Response

Una risposta con esito positivo che usa response_mode=form_post ha un aspetto simile al seguente:A successful response using response_mode=form_post looks like:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...&state=12345
ParametroParameter DescrizioneDescription
id_tokenid_token id_token richiesto dall'app.The id_token that the app requested. È possibile usare id_token per verificare l'identità dell'utente e avviare una sessione con l'utente.You can use the id_token to verify the user's identity and begin a session with the user.
codecode Codice di autorizzazione richiesto dall'app.The authorization_code that the app requested. L'app può usare il codice di autorizzazione per richiedere un token di accesso per la risorsa di destinazione.The app can use the authorization code to request an access token for the target resource. I codici di autorizzazione hanno una durata breve e in genere scadono dopo circa 10 minuti.Authorization_codes are short lived, and typically expire after about 10 minutes.
statestate Se un parametro di stato è incluso nella richiesta, lo stesso valore viene visualizzato nella risposta.If a state parameter is included in the request, the same value should appear in the response. L'app deve verificare che i valori dello stato nella richiesta e nella risposta siano identici.The app should verify that the state values in the request and response are identical.

Risposta di erroreError response

Le risposte di errore possono essere inviate anche a redirect_uri , in modo che l'app possa gestirle adeguatamente:Error responses may also be sent to the redirect_uri so the app can handle them appropriately:

POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

error=access_denied&error_description=the+user+canceled+the+authentication
ParametroParameter DescrizioneDescription
errorerror Stringa di codice di errore che può essere usata per classificare i tipi di errori che si verificano e correggerli.An error code string that can be used to classify types of errors that occur, and can be used to react to errors.
error_descriptionerror_description Messaggio di errore specifico che consente a uno sviluppatore di identificare la causa principale di un errore di autenticazione.A specific error message that can help a developer identify the root cause of an authentication error.

Per una descrizione dei possibili codici di errore e l'azione consigliata per il client, vedere Codici per gli errori dell'endpoint di autorizzazione.For a description of the possible error codes and their recommended client action, see Error codes for authorization endpoint errors.

Una volta ottenuti un code e un id_token di autorizzazione, è possibile far accedere l'utente e ottenere i token di accesso per suo conto.Once you've gotten an authorization code and an id_token, you can sign the user in and get access tokens on their behalf. Per far accedere l'utente è necessario convalidare l' id_token esattamente come descritto sopra.To sign the user in, you must validate the id_token exactly as described above. Per ottenere i token di accesso, è possibile seguire i passaggi descritti nella sezione "Usare un codice di autorizzazione per richiedere un token di accesso" della nostra documentazione del protocollo OAuth.To get access tokens, you can follow the steps described in the "Use the authorization code to request an access token" section of our OAuth protocol documentation.