Dela via


Hantera OAuth-token i Azure App Service

Den här artikeln visar hur du hanterar OAuth-token för inbyggd autentisering och auktorisering i Azure App Service.

Hämta token i appkod

Azure App Service matar in dina providerspecifika token i begärandehuvudet så att du enkelt kan komma åt dem. För att hämta providerspecifika token måste tokenarkivet vara aktiverat för appen.

Skicka en HTTP-begäran GET till /.auth/me från klientkoden, såsom en mobilapp eller JavaScript i webbläsaren. Den returnerade JSON:en har providerspecifika token.

Kommentar

Åtkomsttoken är till för åtkomst till providerresurser, så finns bara om du konfigurerar din provider med en klienthemlighet.

I följande tabell visas namn på OAuth-tokenrubriker för flera inbyggda App Service-leverantörer:

Leverantör Rubriknamn
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 (på engelska) 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

Kommentar

Olika språkramverk kan presentera dessa rubriker för appkoden i olika format, till exempel gemener eller rubrikfall.

Uppdatera autentiseringstoken

Följande information avser providertoken. Information om sessionstoken finns i Utöka respitperioden för sessionstokens förfallotid.

Om providerns åtkomsttoken upphör att gälla måste du autentisera användaren igen innan du kan använda den token igen. Du kan undvika att token upphör att gälla genom att göra ett GET anrop till /.auth/refresh programmets slutpunkt.

Om du vill uppdatera din åtkomsttoken när som helst anropar du /.auth/refresh på valfritt språk. Följande kodfragment använder jQuery för att uppdatera dina åtkomsttoken från en JavaScript-klient.

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

När apptjänsten anropas uppdateras åtkomsttoken automatiskt i tokenarkivet för den autentiserade användaren. Efterföljande begäranden om tokens hämtar de uppfräschade tokens. Du kan se uppdateringstoken och förfallotiden för token med hjälp av rubrikerna som anges i Hämta token i appkod.

Kommentar

Om en användare återkallar de behörigheter som de beviljat till din app kan ditt anrop till /.auth/me misslyckas med ett 403 Forbidden svar. Om du vill diagnostisera fel kontrollerar du programloggarna för mer information.

Konfigurera leverantörer för att tillhandahålla uppfräschningssymboler

För att tokenuppdateringen ska fungera måste tokenarkivet innehålla uppdateringstoken från providern. Varje provider dokumenterar hur de hämtar sina uppdateringstoken. Följande tabell innehåller en kort sammanfattning:

Leverantör Uppdatera tokenar
Microsoft Följ proceduren i Konfigurera Microsoft Entra-providern för att tillhandahålla uppdateringstoken.
Facebook (på engelska) Tillhandahåller inte uppdateringstoken. Långlivade token upphör att gälla om 60 dagar. Mer information finns iLong-Lived åtkomsttoken.
Google Lägg till en access_type=offline frågesträngsparameter i API-anropet /.auth/login/google . Mer information finns i Googles uppdateringstoken.
X Åtkomsttoken upphör inte att gälla. Mer information finns i Vanliga frågor och svar om OAuth.

Konfigurera Microsoft Entra-providern för att tillhandahålla refresh-token

  1. I Azure-portalen går du till API Playground (förhandsversion) och väljer Ny begäran om det behövs.
  2. I fältet Ange relativ ARM-sökväg här, inklusive API-version , anger du följande sträng och ersätter platshållarna med ditt prenumerations-ID, resursgruppsnamn och appnamn:
    subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01
  3. Välj Kör.
  4. Välj PUT längst upp till vänster och välj fliken Begärandetext .
  5. Kopiera svarsinnehållet GET från fältet Svarstext och klistra in dem på fliken Begärandetext .
  6. Leta upp avsnittet i "identityProviders":>>"azureActiveDirectory":"login": koden och lägg till följande rad:
    "loginParameters": ["scope=openid profile email offline_access"]
  7. Välj Kör. I fältet Svarstext visas dina ändringar.

Offline_access är omfånget som tillhandahåller refresh tokens. App Service begär redan de andra omfången som standard. Mer information finns i OpenID Connect-omfång och Webbappar – Uppdatera autentiseringsinställningar V2.

Utöka respitperioden för förfallotid för sessionstoken

Den autentiserade sessionen upphör att gälla efter 8 timmar och en 72-timmars standard respitperiod följer. Inom den här respitperioden kan du uppdatera sessionstoken med App Service utan att autentisera användaren igen. Du kan bara anropa /.auth/refresh när sessionstoken blir ogiltig och du inte behöver spåra tokens förfallodatum själv.

När respitperioden på 72 timmar upphör måste användaren logga in igen för att få en giltig sessionstoken. Om du behöver ett längre förfallofönster än 72 timmar kan du förlänga det, men om du förlänger förfallotiden under en längre period kan det få betydande säkerhetskonsekvenser om en autentiseringstoken läcker eller blir stulen. Det är bäst att lämna inställningen som standard 72 timmar eller ange tilläggsperioden till det minsta möjliga värdet.

Om du vill utöka standardförfallofönstret kör du följande Azure CLI-kommando i Azure Cloud Shell:

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

Kommentar

Respitperioden gäller endast för apptjänstens autentiserade session, inte för åtkomsttoken från identitetsprovidrar. Det finns ingen respitperiod för förfallna providertoken.