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 | 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 |
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.
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:
Google: Lägg till en
access_type=offline
frågesträngsparameter i API-anropet/.auth/login/google
. Mer information finns i Googles uppdateringstoken.Facebook: Tillhandahåller inte uppdateringstoken. Långlivade token upphör att gälla om 60 dagar (se Facebook-förfallodatum och tillägg för åtkomsttoken).
X: Åtkomsttoken upphör inte att gälla (se vanliga frågor och svar om OAuth).
Microsoft: Gör https://resources.azure.comföljande i :
Välj Läs/skriv överst på sidan.
I den vänstra webbläsaren går du till prenumerationer><subscription_name>>resourceGroups><resource_group_name>>providers>Microsoft.Web>sites<>app_name>>config>authsettingsV2.
Klicka på Redigera.
Ändra följande egenskap.
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
Klicka på Lägg till.
Kommentar
Omfånget som ger dig en uppdateringstoken är offline_access. Se hur det används i Självstudie: Autentisera och auktorisera användare från slutpunkt till slutpunkt i Azure App Service. De andra omfången begärs som standard redan av App Service. Information om dessa standardomfattningar finns i OpenID Connect-omfång.
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 upphör 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.