Condividi tramite


Gestire i token OAuth nel servizio app di Azure

Questo articolo illustra come gestire i token OAuth per l'autenticazione e l'autorizzazione predefiniti nel servizio app di Azure.

Recuperare i token nel codice dell'app

Servizio app di Azure inserisce i token specifici del provider nell'intestazione della richiesta in modo da potervi accedere facilmente. Per ottenere i token specifici del provider, l'archivio token deve essere abilitato per l'app.

Inviare una richiesta HTTP GET a /.auth/me dal codice client, ad esempio un'app per dispositivi mobili o JavaScript nel browser. Il codice JSON restituito include i token specifici del provider.

Note

I token di accesso sono destinati all'accesso alle risorse del provider, quindi sono presenti solo se si configura il provider con un segreto client.

La tabella seguente elenca i nomi delle intestazioni del token OAuth per diversi provider predefiniti del servizio app:

Fornitore Nomi dell'intestazione
Microsoft Entra X-MS-TOKEN-AAD-ID-TOKEN
X-MS-TOKEN-AAD-ACCESS-TOKEN
X-MS-TOKEN-AAD-EXPIRES-ON
X-MS-TOKEN-AAD-REFRESH-TOKEN
Facebook X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN
X-MS-TOKEN-FACEBOOK-EXPIRES-ON
Google X-MS-TOKEN-GOOGLE-ID-TOKEN
X-MS-TOKEN-GOOGLE-ACCESS-TOKEN
X-MS-TOKEN-GOOGLE-EXPIRES-ON
X-MS-TOKEN-GOOGLE-REFRESH-TOKEN
X X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET

Note

Framework di linguaggio diversi potrebbero presentare queste intestazioni al codice dell'app in formati diversi, ad esempio lettere minuscole o maiuscole.

Aggiornare i token di autenticazione

Le informazioni seguenti fanno riferimento ai token del provider. Per i token di sessione, vedere Estendere il periodo di tolleranza di scadenza del token di sessione.

Se il token di accesso del provider scade, è necessario ripetere l'autenticazione dell'utente prima di poter usare di nuovo tale token. È possibile evitare la scadenza del token eseguendo una chiamata di GET nell'endpoint /.auth/refresh dell'applicazione.

Per aggiornare il token di accesso in qualsiasi momento, chiamare /.auth/refresh in qualsiasi lingua. Il frammento di codice seguente usa jQuery per aggiornare i token di accesso da un client JavaScript.

function refreshTokens() {
  let refreshUrl = "/.auth/refresh";
  $.ajax(refreshUrl) .done(function() {
    console.log("Token refresh completed successfully.");
  }) .fail(function() {
    console.log("Token refresh failed. See application logs for details.");
  });
}

Quando viene chiamato, il servizio app aggiorna automaticamente i token di accesso nell'archivio token per l'utente autenticato. Le successive richieste di token ottengono i token aggiornati. È possibile visualizzare i token di aggiornamento e la scadenza per i token usando le intestazioni elencate in Recuperare i token nel codice dell'app.

Note

Se un utente revoca le autorizzazioni concesse alla tua app, la chiamata a /.auth/me potrebbe non riuscire restituendo una risposta 403 Forbidden. Per diagnosticare gli errori, controllare i log dell'applicazione per informazioni dettagliate.

Configurare i provider per fornire i token di aggiornamento

Per il funzionamento dell'aggiornamento del token, l'archivio token deve contenere token di aggiornamento dal tuo provider. Ogni provider documenta come ottenere i token di aggiornamento. La tabella seguente fornisce un breve riepilogo:

Fornitore Token di aggiornamento
Microsoft Seguire la procedura descritta in Configurare il provider Microsoft Entra per fornire i token di aggiornamento.
Facebook Non fornisce token di aggiornamento. I token di lunga durata scadono in 60 giorni. Per altre informazioni, vedere Long-Lived Token di accesso.
Google Aggiungere un parametro di stringa di query access_type=offline alla chiamata API di /.auth/login/google. Per altre informazioni, vedere Token di aggiornamento Google.
X Il token di accesso non scade. Per altre informazioni, vedere Domande frequenti su OAuth.

Configurare il provider Microsoft Entra per fornire i token di aggiornamento

  1. Nel portale di Azure passare all'API Playground (anteprima) e selezionare Nuova richiesta , se necessario.
  2. Nel campo Immettere il percorso relativo ARM qui incluso il campo Versione API, immettere la stringa seguente, sostituendo i segnaposto con l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'app:
    subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01
  3. Seleziona Execute.
  4. Selezionare PUT in alto a sinistra e selezionare la scheda Corpo della richiesta .
  5. Copiare il contenuto della GET risposta dal campo Corpo della risposta e incollarli nella scheda Corpo della richiesta .
  6. Nel codice individuare la "identityProviders":>>"azureActiveDirectory":"login": sezione e aggiungere la riga seguente:
    "loginParameters": ["scope=openid profile email offline_access"]
  7. Seleziona Execute. Il campo Corpo della risposta mostra le modifiche apportate.

Offline_access è l'ambito che fornisce i token di aggiornamento. Il servizio App richiede già gli altri ambiti per impostazione predefinita. Per altre informazioni, vedere Ambiti openID Connect e app Web - Aggiornare le impostazioni di autenticazione V2.

Estendere il periodo di tolleranza della scadenza del token di sessione

La sessione autenticata scade dopo 8 ore e segue un periodo di tolleranza predefinito di 72 ore. In questo periodo di tolleranza è possibile aggiornare il token di sessione con il servizio app senza autenticare nuovamente l'utente. È sufficiente chiamare /.auth/refresh quando il token di sessione non è valido e non è necessario tenere traccia della scadenza del token manualmente.

Quando il periodo di tolleranza di 72 ore scade, l'utente deve eseguire di nuovo l'accesso per ottenere un token di sessione valido. Se è necessaria una finestra di scadenza più lunga di 72 ore, è possibile estenderla, ma l'estensione della scadenza per un lungo periodo potrebbe avere implicazioni significative sulla sicurezza se un token di autenticazione viene trapelato o rubato. È consigliabile lasciare l'impostazione predefinita di 72 ore o impostare il periodo di estensione sul valore più piccolo possibile.

Per estendere la finestra di scadenza predefinita, eseguire il comando seguente dell'interfaccia della riga di comando di Azure in Azure Cloud Shell:

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

Note

Il periodo di tolleranza si applica solo alla sessione autenticata del servizio app, non ai token di accesso dei provider di identità. Non esiste alcun periodo di tolleranza per i token del provider scaduti.