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
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

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:

    1. A lap tetején válassza az Olvasás/Írás lehetőséget.

    2. 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.

    3. Kattintson a Szerkesztés gombra.

    4. Módosítsa a következő tulajdonságot.

      "identityProviders": {
        "azureActiveDirectory": {
          "login": {
            "loginParameters": ["scope=openid profile email offline_access"]
          }
        }
      }
      
    5. 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.

Következő lépések