Sdílet prostřednictvím


Správa tokenů OAuth ve službě Azure App Service

V tomto článku se dozvíte, jak spravovat tokeny OAuth pro integrované ověřování a autorizaci ve službě Azure App Service.

Načtení tokenů v kódu aplikace

Azure App Service vloží tokeny specifické pro poskytovatele do hlavičky požadavku, abyste k nim měli snadný přístup. Pokud chcete získat tokeny specifické pro poskytovatele, musí být pro aplikaci povolené úložiště tokenů .

Odešlete HTTP GET požadavek na /.auth/me z klientského kódu, jako je mobilní aplikace nebo JavaScript v prohlížeči. Vrácený JSON má tokeny specifické pro zprostředkovatele.

Poznámka:

Přístupové tokeny jsou určené 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 kódem klienta.

Následující tabulka uvádí názvy hlaviček tokenů OAuth pro několik předdefinovaných poskytovatelů služby App Service:

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
Facebook 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í 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.

Aktualizace ověřovacích tokenů

Následující informace se týkají tokenů zprostředkovatele. Informace o tokenech relací najdete v tématu Prodloužení období odkladu vypršení platnosti tokenu relace.

Pokud platnost přístupového tokenu poskytovatele vyprší, musíte uživatele znovu ověřit, než ho budete moct znovu použít. Vypršení platnosti tokenu se můžete vyhnout voláním na GET endpoint /.auth/refresh vaší aplikace.

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

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ískají aktualizované tokeny. Obnovovací tokeny a čas vypršení platnosti tokenů můžete zobrazit pomocí hlaviček uvedených v části Načtení tokenů v kódu aplikace.

Poznámka:

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.

Konfigurace poskytovatelů pro poskytování obnovovacích tokenů

Aby aktualizace tokenu fungovala, úložiště tokenů musí obsahovat obnovovací tokeny od vašeho zprostředkovatele. Každý poskytovatel dokumentuje, jak získat obnovovací tokeny. Následující tabulka obsahuje stručný přehled:

Poskytovatel Aktualizace tokenů
Společnost Microsoft Postupujte podle pokynů v části Konfigurace zprostředkovatele Microsoft Entra a zadejte obnovovací tokeny.
Facebook Neposkytuje obnovovací tokeny. Platnost dlouhodobých tokenů vyprší za 60 dnů. Další informace najdete v tématu Long-Lived přístupových tokenů.
Google Připojte parametr dotazovacího řetězce ke svému volání API. Další informace najdete v tématu Obnovovací tokeny Google.
X Platnost přístupových tokenů nevyprší. Další informace najdete v nejčastějších dotazech k OAuth.

Konfigurace zprostředkovatele Microsoft Entra pro poskytování obnovovacích tokenů

  1. Na webu Azure Portal přejděte na rozhraní API Playground (Preview) a v případě potřeby vyberte Nový požadavek .
  2. Do pole Zadejte relativní cestu ARM včetně verze rozhraní API zadejte následující text a nahraďte zástupné znaky za ID vašeho předplatného, název skupiny prostředků a název aplikace:
    subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01
  3. Vyberte Spustit.
  4. Vyberte PUT vlevo nahoře a vyberte kartu Text požadavku .
  5. GET Zkopírujte obsah odpovědi z pole Text odpovědi a vložte je na kartu Text požadavku.
  6. V kódu vyhledejte "identityProviders":>>"azureActiveDirectory":"login": oddíl a přidejte následující řádek:
    "loginParameters": ["scope=openid profile email offline_access"]
  7. Vyberte Spustit. V poli Text odpovědi se zobrazí vaše změny.

Offline_access je obor, který poskytuje obnovovací tokeny. Služba App Service již standardně požaduje ostatní rozsahy. Další informace najdete v tématu Obory OpenID Connect a Web Apps – Aktualizace nastavení ověřování V2.

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

Ověřená relace vyprší po 8 hodinách a poté následuje výchozí 72hodinové období odkladu. Během této lhůty můžete token relace obnovit pomocí služby App Service bez opětovného ověření uživatele. Můžete jednoduše zavolat /.auth/refresh, jakmile se token relace stane neplatným a nemusíte sami sledovat vypršení platnosti tokenu.

Po uplynutí 72hodinové doby odkladu se uživatel musí znovu přihlásit, aby získal platný token sezení. Pokud potřebujete delší časový interval vypršení platnosti než 72 hodin, můžete ho prodloužit, ale prodloužení platnosti po dlouhou dobu může mít významné bezpečnostní důsledky, pokud dojde k úniku nebo odcizení ověřovacího tokenu. Nejlepší je ponechat nastavení ve výchozím nastavení 72 hodin nebo nastavit dobu prodloužení na nejmenší možnou hodnotu.

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

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 na přístupové tokeny od zprostředkovatelů identity. Pro tokeny zprostředkovatele s vypršenou platností neexistuje žádná lhůta.