Arbeta med OAuth-token i Azure App Service-autentisering

Den här artikeln visar hur du arbetar med OAuth-token när du använder den inbyggda autentiseringen och auktoriseringen i App Service.

Hämta token i appkod

Från serverkoden matas de providerspecifika token in i begärandehuvudet, så att du enkelt kan komma åt dem. I följande tabell visas möjliga namn på tokenrubriker:

Provider Rubriknamn
Microsoft Entra ID 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-token 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
Twitter 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.

Från din klientkod (till exempel en mobilapp eller JavaScript i webbläsaren) skickar du en HTTP-begäran GET till /.auth/me (tokenarkivet måste vara aktiverat). Den returnerade JSON:en har providerspecifika token.

Kommentar

Åtkomsttoken används för åtkomst till providerresurser, så de finns bara om du konfigurerar din provider med en klienthemlighet. Information om hur du hämtar uppdateringstoken finns i Uppdatera åtkomsttoken.

Uppdatera autentiseringstoken

När providerns åtkomsttoken (inte sessionstoken) upphör att gälla måste du autentisera användaren igen innan du använder 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. När apptjänsten anropas uppdateras åtkomsttoken automatiskt i tokenarkivet för den autentiserade användaren. Efterföljande begäranden om token av din appkod hämtar uppdaterade token. Men för att tokenuppdateringen ska fungera måste tokenarkivet innehålla uppdateringstoken för providern. Sättet att hämta uppdateringstoken dokumenteras av varje provider, men följande lista är en kort sammanfattning:

När providern har konfigurerats kan du hitta uppdateringstoken och förfallotiden för åtkomsttoken i tokenarkivet.

Om du vill uppdatera din åtkomsttoken när som helst anropar /.auth/refresh du bara 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.");
  });
}

Om en användare återkallar de behörigheter som beviljats 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.

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

Den autentiserade sessionen upphör att gälla efter 8 timmar. När en autentiserad session upphör att gälla finns det en respitperiod på 72 timmar som standard. 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 har upphört måste användaren logga in igen för att få en giltig sessionstoken.

Om du inte har tillräckligt med tid på 72 timmar kan du förlänga det här förfallofönstret. Att förlänga förfallotiden under en lång period kan få betydande säkerhetskonsekvenser (till exempel när en autentiseringstoken läcker eller blir stulen). Du bör därför lämna den som standard 72 timmar eller ange tilläggsperioden till det minsta värdet.

Om du vill utöka standardförfallofönstret kör du följande kommando i 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 den autentiserade App Service-sessionen, inte token från identitetsprovidrar. Det finns ingen respitperiod för de förfallna providertoken.

Nästa steg