Sdílet prostřednictvím


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

Tento článek ukazuje, jak pracovat s tokeny OAuth při použití integrovaného ověřování a autorizace ve službě Azure App Service.

Načtení tokenů v kódu aplikace

Z kódu serveru se tokeny specifické pro poskytovatele 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 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
X X-MS-TOKEN-TWITTER-ACCESS-TOKEN
X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET

Poznámka:

Různá jazyková rozhraní můžou tyto hlavičky prezentovat kódu aplikace v různých formátech, například malými písmeny nebo pomocí písmen 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 slouží pro přístup k prostředkům zprostředkovatele, takže jsou k dispozici pouze v případě, že nakonfigurujete svého poskytovatele s tajným klíčem klienta.

Aktualizace ověřovacích tokenů

Když vyprší platnost přístupového tokenu vašeho poskytovatele (nikoli tokenu relace), před opětovným použitím tohoto tokenu musíte uživatele znovu ověřit. Vypršení platnosti tokenu se můžete vyhnout voláním na GET endpoint /.auth/refresh vaší 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 z vašeho aplikačního kódu získají aktualizované tokeny. Aby ale aktualizace tokenů fungovala, úložiště tokenů musí obsahovat obnovovací tokeny pro vašeho poskytovatele. Způsob získání obnovovacích tokenů je zdokumentován jednotlivými poskytovateli, ale následující seznam je stručný souhrn:

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

  • Facebook: Neposkytuje obnovovací tokeny. Platnost dlouhodobých tokenů vyprší za 60 dnů (viz Dlouhodobé přístupové tokeny).

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

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

    1. V horní části podokna vyberte Čtení/Zápis.

    2. V nabídce průzkumníka přejděte na předplatná>název předplatného>resourceGroups>název skupiny prostředků>poskytovatelé>Microsoft.Web>sites>název aplikace>config>authsettingsV2.

    3. Vyberte položku Upravit.

    4. Upravte následující vlastnost:

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

    Poznámka:

    Rozsah, který umožňuje vydání obnovovacího tokenu, je offline_access. Podívejte se, jak se to používá v Tutoriál: Ověřte a autorizujte uživatele od začátku do konce ve službě Azure App Service. Ostatní obory už služba App Service ve výchozím nastavení vyžaduje. Informace o těchto výchozích oborech najdete v tématu Obory OpenID Connect.

Po nakonfigurování poskytovatele najdete obnovovací token a čas vypršení platnosti přístupového tokenu v úložišti tokenů.

Pokud chcete přístupový token kdykoli aktualizovat, zavolejte /.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 volání /.auth/me selhat s odpovědí 403 Forbidden. Pokud chcete diagnostikovat chyby, zkontrolujte podrobnosti v protokolech aplikace.

Prodloužení lhůty odkladu vypršení platnosti tokenu relace

Ověřená relace vyprší po 8 hodinách. Ve výchozím nastavení po vypršení platnosti ověřené relace následuje 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. Jednoduše můžete volat /.auth/refresh, když se token relace stane neplatným, a nemusíte sledovat vypršení platnosti tokenu vlastnoručně. Po uplynutí 72hodinové doby odkladu se uživatel musí znovu přihlásit, aby získal platný token sezení.

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). Doporučujeme ponechat nastavení 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 Azure 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 relaci ověřenou pomocí služby App Service, nikoli na tokeny od poskytovatelů identity. Pro tokeny zprostředkovatele s vypršenou platností neexistuje žádná lhůta.