Práce s tokeny OAuth v ověřování služby Aplikace Azure

V tomto článku se dozvíte, jak pracovat s tokeny OAuth při použití integrovaného ověřování a autorizace ve službě App Service.

Načtení tokenů v kódu aplikace

Z kódu serveru se tokeny specifické pro zprostředkovatele vloží do hlavičky požadavku, abyste k nim měli snadný přístup. Následující tabulka uvádí možné názvy hlaviček tokenů:

Poskytovatel Názvy záhlaví
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
Token Facebooku 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

Poznámka:

Různá jazyková rozhraní mohou tyto hlavičky prezentovat kódu aplikace v různých formátech, jako jsou malá písmena nebo velká písmena názvu.

Z klientského kódu (například mobilní aplikace nebo JavaScriptu v prohlížeči) odešlete požadavek HTTP GET (/.auth/memusí být povolené úložiště tokenů). Vrácený JSON má tokeny specifické pro zprostředkovatele.

Poznámka:

Přístupové tokeny jsou určené pro přístup k prostředkům poskytovatele, takže jsou k dispozici pouze v případě, že nakonfigurujete svého poskytovatele s tajným klíčem klienta. Informace o tom, jak získat obnovovací tokeny, najdete v tématu Aktualizace přístupových tokenů.

Aktualizace ověřovacích tokenů

Když vyprší platnost přístupového tokenu vašeho poskytovatele (nikoli tokenu relace), musíte uživatele před dalším použitím tokenu znovu ověřit. Vypršení platnosti tokenu se můžete vyhnout voláním GET koncového /.auth/refresh bodu aplikace. Při zavolání služba App Service automaticky aktualizuje přístupové tokeny v úložišti tokenů ověřeného uživatele. Následné požadavky na tokeny kódem aplikace získají aktualizované tokeny. Aby ale aktualizace tokenů fungovala, úložiště tokenů musí obsahovat obnovovací tokeny pro vašeho poskytovatele. Způsob, jak získat obnovovací tokeny, jsou zdokumentované jednotlivými zprostředkovateli, ale následující seznam je stručný souhrn:

  • Google: Připojte access_type=offline k volání rozhraní API parametr /.auth/login/google řetězce dotazu. Další informace najdete v tématu Obnovovací tokeny Google.

  • Facebook: Neposkytuje obnovovací tokeny. Platnost dlouhodobých tokenů vyprší za 60 dnů (viz Vypršení platnosti a rozšíření přístupových tokenů na Facebooku).

  • Twitter: Platnost přístupových tokenů nevyprší (viz nejčastější dotazy k Twitteru OAuth).

  • Microsoft: V https://resources.azure.comaplikaci proveďte následující kroky:

    1. V horní části stránky vyberte Čtení a zápis.

    2. V levém prohlížeči přejděte na předplatná<>subscription_name>>resourceGroups><resource_group_name>>zprostředkovatelů>Microsoft.Web>weby<>app_name>>nastavení>konfigurace authsettingsV2.

    3. Klikněte na možnost Upravit.

    4. Upravte následující vlastnost.

      "identityProviders": {
        "azureActiveDirectory": {
          "login": {
            "loginParameters": ["scope=openid profile email offline_access"]
          }
        }
      }
      
    5. Klikněte na Vložit.

    Poznámka:

    Rozsah, který poskytuje obnovovací token, je offline_access. Podívejte se, jak se používá v kurzu: Ověřování a autorizace koncových uživatelů ve službě Aplikace Azure Service. Ostatní obory se ve výchozím nastavení požadují ve službě App Service. Informace o těchto výchozíchoborechch Připojení ch

Jakmile je váš poskytovatel nakonfigurovaný, můžete najít obnovovací token a čas vypršení platnosti přístupového tokenu v úložišti tokenů.

Pokud chcete přístupový token kdykoli aktualizovat, stačí volat /.auth/refresh v libovolném jazyce. Následující fragment kódu používá jQuery k aktualizaci přístupových tokenů z javascriptového klienta.

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.");
  });
}

Pokud uživatel odvolá oprávnění udělená vaší aplikaci, může vaše volání /.auth/me selhat s 403 Forbidden odpovědí. Pokud chcete diagnostikovat chyby, zkontrolujte podrobnosti v protokolech aplikace.

Prodloužení období odkladu vypršení platnosti tokenu relace

Ověřená relace vyprší po 8 hodinách. Po vypršení platnosti ověřené relace je ve výchozím nastavení 72hodinové období odkladu. Během této doby odkladu můžete token relace aktualizovat pomocí služby App Service bez opětovného ověření uživatele. Stačí volat /.auth/refresh , když se token relace stane neplatným a nemusíte sledovat vypršení platnosti tokenu sami. Po uplynutí 72hodinové lhůty odkladu se uživatel musí znovu přihlásit, aby získal platný token relace.

Pokud vám 72 hodin nestačí, můžete toto okno vypršení platnosti prodloužit. Prodloužení platnosti po dlouhou dobu může mít významný dopad na zabezpečení (například při úniku nebo odcizení ověřovacího tokenu). Proto byste ho měli nechat ve výchozím nastavení 72 hodin nebo nastavit dobu prodloužení na nejmenší hodnotu.

Pokud chcete rozšířit výchozí okno vypršení platnosti, spusťte v Cloud Shellu následující příkaz.

az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>

Poznámka:

Období odkladu se vztahuje pouze na ověřenou relaci služby App Service, ne tokeny od zprostředkovatelů identity. Pro tokeny zprostředkovatele s vypršenou platností neexistuje žádné období odkladu.

Další kroky