OAuth-jogkivonatok használata Azure-alkalmazás szolgáltatáshitelesítésben
Ez a cikk bemutatja, hogyan használhatja az OAuth-jogkivonatokat az App Service beépített hitelesítése és engedélyezése során.
Jogkivonatok lekérése alkalmazáskódban
A kiszolgálókódból a szolgáltatóspecifikus jogkivonatok be lesznek ágyazva a kérés fejlécébe, így könnyen elérheti őket. Az alábbi táblázat a lehetséges jogkivonatfejlécneveket mutatja be:
Provider | Fejlécnevek |
---|---|
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-jogkivonat | 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-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
|
Megjegyzés:
A különböző nyelvi keretrendszerek ezeket az élőfejeket különböző formátumokban, például kisbetűs vagy címes formában jeleníthetik meg az alkalmazás kódjában.
Az ügyfélkódból (például mobilalkalmazásból vagy böngészőn belüli JavaScriptből) küldjön HTTP-kérést GET
/.auth/me
(a jogkivonattárat engedélyezni kell). A visszaadott JSON szolgáltatóspecifikus jogkivonatokkal rendelkezik.
Megjegyzés:
A hozzáférési jogkivonatok a szolgáltatói erőforrások elérésére használhatók, ezért csak akkor jelennek meg, ha a szolgáltatót ügyfélkóddal konfigurálja. A frissítési jogkivonatok lekéréséről a hozzáférési jogkivonatok frissítése című témakörben olvashat.
Hitelesítési jogkivonatok frissítése
Ha a szolgáltató hozzáférési jogkivonata (nem a munkamenet-jogkivonat) lejár, újra meg kell adnia a felhasználót a jogkivonat ismételt használata előtt. Elkerülheti a jogkivonatok lejáratát az GET
alkalmazás végpontjára irányuló hívással /.auth/refresh
. Hívás esetén az App Service automatikusan frissíti a hozzáférési jogkivonatokat a hitelesített felhasználó jogkivonat-tárolójában . Az alkalmazáskód későbbi jogkivonat-kérelmei lekérik a frissített jogkivonatokat. Ahhoz azonban, hogy a jogkivonat frissítése működjön, a jogkivonattárnak tartalmaznia kell a szolgáltató frissítési jogkivonatait . A frissítési jogkivonatok beszerzésének módját minden szolgáltató dokumentálja, de az alábbi lista rövid összefoglalást tartalmaz:
Google: Egy lekérdezési sztring
access_type=offline
paraméter hozzáfűzése az/.auth/login/google
API-híváshoz. További információ: Google Refresh Tokens.Facebook: Nem biztosít frissítési jogkivonatokat. A hosszú élettartamú tokenek 60 napon belül lejárnak (lásd: Facebook-lejárat és hozzáférési jogkivonatok kiterjesztése).
Twitter: A hozzáférési jogkivonatok nem járnak le (lásd a Twitter OAuth gyakori kérdéseit).
Microsoft: Ebben https://resources.azure.coma lépésben hajtsa végre a következő lépéseket:
A lap tetején válassza az Olvasás/Írás lehetőséget.
A bal oldali böngészőben keresse meg az előfizetéseket<>subscription_name>>resourceGroups><resource_group_name>>szolgáltatókAt>Microsoft.Web>sites<>app_name>>config>authsettingsV2.
Kattintson a Szerkesztés gombra.
Módosítsa a következő tulajdonságot.
"identityProviders": { "azureActiveDirectory": { "login": { "loginParameters": ["scope=openid profile email offline_access"] } } }
Kattintson a Fel gombra.
Megjegyzés:
A frissítési jogkivonatot tartalmazó hatókör offline_access. Tekintse meg, hogyan használják az oktatóanyagban: A felhasználók hitelesítése és engedélyezése a végfelhasználók számára a Azure-alkalmazás Szolgáltatásban. A többi hatókört az App Service alapértelmezés szerint már kéri. Az alapértelmezett hatókörökről további információt az OpenID Csatlakozás Hatókörök című témakörben talál.
A szolgáltató konfigurálása után megtalálhatja a frissítési jogkivonatot és a hozzáférési jogkivonat lejárati idejét a jogkivonattárolóban.
A hozzáférési jogkivonat bármikori frissítéséhez egyszerűen hívjon bármilyen /.auth/refresh
nyelven. Az alábbi kódrészlet jQuery használatával frissíti a hozzáférési jogkivonatokat egy JavaScript-ügyfélről.
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.");
});
}
Ha egy felhasználó visszavonja az alkalmazásnak adott engedélyeket, a hívás /.auth/me
sikertelen lehet egy 403 Forbidden
válaszsal. A hibák diagnosztizálásához ellenőrizze az alkalmazásnaplókat a részletekért.
Munkamenet-jogkivonat lejárati türelmi időszakának meghosszabbítása
A hitelesített munkamenet 8 óra elteltével lejár. A hitelesített munkamenet lejárata után alapértelmezés szerint 72 órás türelmi időszak van érvényben. Ebben a türelmi időszakban a felhasználó ismételt hitelesítése nélkül frissítheti a munkamenet-jogkivonatot az App Service-ben. Csak akkor hívhat, /.auth/refresh
ha a munkamenet-jogkivonat érvénytelenné válik, és nem kell nyomon követnie a jogkivonat lejáratát. A 72 órás türelmi időszak lejárta után a felhasználónak újra be kell jelentkeznie egy érvényes munkamenet-jogkivonat beszerzéséhez.
Ha a 72 óra nem elegendő az Ön számára, meghosszabbíthatja ezt a lejárati időszakot. A lejárat hosszú ideig történő meghosszabbítása jelentős biztonsági következményekkel járhat (például egy hitelesítési jogkivonat kiszivárogtatása vagy ellopása esetén). Ezért hagyja meg az alapértelmezett 72 órában, vagy állítsa a hosszabbítási időszakot a legkisebb értékre.
Az alapértelmezett lejárati időszak meghosszabbításához futtassa a következő parancsot a Cloud Shellben.
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Megjegyzés:
A türelmi időszak csak az App Service által hitelesített munkamenetre vonatkozik, az identitásszolgáltatók jogkivonatára nem. A lejárt szolgáltatói jogkivonatokhoz nincs türelmi időszak.