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 providerspecifika token in i begärandehuvudet, så att du enkelt kan komma åt dem. Följande tabell visar möjliga namn på tokenrubriker:

Leverantör Rubriknamn
Azure Active Directory 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

Anteckning

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

Från klientkoden (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.

Anteckning

Åtkomsttoken används för åtkomst till providerresurser, så de finns bara om du konfigurerar providern 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 /.auth/refresh anropa GET programmets slutpunkt. När det anropas uppdaterar App Service automatiskt åtkomsttoken i tokenarkivet för den autentiserade användaren. Efterföljande begäranden om token från din appkod hämtar uppdaterade token. Men för att tokenuppdateringen ska fungera måste tokenarkivet innehålla uppdateringstoken för din provider. Sättet att hämta uppdateringstoken dokumenteras av varje provider, men följande lista är en kort sammanfattning:

När providern har konfigurerats hittar du 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 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.

Utöka respitperioden för sessionstokens förfallotid

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 får du uppdatera sessionstoken med App Service utan att autentisera användaren igen. Du kan bara anropa /.auth/refresh när din sessionstoken blir ogiltig och du inte behöver spåra tokens förfallodatum själv. När respitperioden på 72 timmar är förfallen måste användaren logga in igen för att få en giltig sessionstoken.

Om 72 timmar inte räcker för dig 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>

Anteckning

Respitperioden gäller endast för den App Service autentiserade sessionen, inte token från identitetsprovidrar. Det finns ingen respitperiod för de förfallna providertoken.

Nästa steg