Freigeben über


Arbeiten mit OAuth-Token bei der Azure App Service-Authentifizierung

In diesem Artikel wird erläutert, wie Sie OAuth-Token einsetzen können, während Sie die integrierte Authentifizierung und Autorisierung in App Service nutzen.

Abrufen von Token in App-Code

Die anbieterspezifischen Token werden aus dem Servercode in den Anforderungsheader eingefügt, sodass Sie problemlos darauf zugreifen können. Die folgende Tabelle zeigt mögliche Namen von Tokenheadern:

Anbieter Headernamen
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-Token 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

Hinweis

Verschiedene Sprachenframeworks zeigen diese Header im App-Code möglicherweise in verschiedenen Formaten an (klein geschrieben oder mit großen Anfangsbuchstaben).

Senden Sie von Ihrem Clientcode (z. B. einer mobilen App oder JavaScript im Browser) eine HTTP-GET-Anforderung an /.auth/me (der Tokenspeicher muss aktiviert sein). Der zurückgegebene JSON-Code enthält die anbieterspezifischen-Token.

Hinweis

Zugriffstoken sind für den Zugriff auf Anbieterressourcen vorgesehen, daher sind sie nur vorhanden, wenn Sie den Anbieter mit einem geheimen Clientschlüssel konfigurieren. Informationen zum Abrufen von Aktualisierungstoken finden Sie unter „Zugriffstoken für die Aktualisierung“.

Aktualisieren von Authentifizierungstoken

Wenn das Zugriffstoken Ihres Anbieters (nicht das Sitzungstoken) abgelaufen ist, müssen Sie den Benutzer erneut authentifizieren, bevor Sie dieses Token erneut verwenden. Sie können den Tokenablauf vermeiden, indem Sie einen GET-Aufruf an den /.auth/refresh-Endpunkt Ihrer Anwendung durchführen. Bei einem Aufruf aktualisiert App Service automatisch die Zugriffstoken im Tokenspeicher für den authentifizierten Benutzer. Bei nachfolgenden Anforderungen von Token durch Ihren App-Code werden die aktualisierten Token abgerufen. Damit die Tokenaktualisierung funktioniert, muss der Tokenspeicher jedoch Aktualisierungstoken für Ihren Anbieter enthalten. Die jeweilige Methode zum Abrufen von Aktualisierungstoken ist von den einzelnen Anbietern dokumentiert, die folgende Liste stellt jedoch eine kurze Zusammenfassung dar:

  • Google: Fügen Sie einen Abfragezeichenfolgen-Parameter vom Typ access_type=offline an Ihren /.auth/login/google-API-Aufruf an. Weitere Informationen finden Sie unter Google-Aktualisierungstoken.

  • Facebook: Stellt keine Aktualisierungstoken bereit. Langlebige Token laufen nach 60 ab (siehe Verlängern von Zugriffsschlüsseln für Seiten).

  • X: Zugriffstoken laufen nicht ab (siehe häufig gestellte Fragen).

  • Microsoft: Führen Sie in https://resources.azure.com die folgenden Schritte aus:

    1. Wählen Sie am oberen Seitenrand die Option Lesen/Schreiben aus.

    2. In the left browser, navigate to subscriptions><subscription_name>>resourceGroups><resource_group_name>>providers>Microsoft.Web>sites><app_name>>config>authsettingsV2.

    3. Klicken Sie auf Bearbeiten.

    4. Ändern Sie die folgende Eigenschaft.

      "identityProviders": {
        "azureActiveDirectory": {
          "login": {
            "loginParameters": ["scope=openid profile email offline_access"]
          }
        }
      }
      
    5. Klicken Sie auf Put.

    Hinweis

    Der Bereich, der Ihnen ein Aktualisierungstoken bietet, ist offline_access. Die Vorgehensweise dazu finden Sie in Tutorial: Umfassendes Authentifizieren und Autorisieren von Benutzern in Azure App Service. Die anderen Bereiche werden standardmäßig von App Service angefordert. Informationen zu diesen Standardbereich finden Sie unter OpenID Connect-Bereiche.

Sobald Ihr Anbieter konfiguriert ist, können Sie im Tokenspeicher das Aktualisierungstoken und die Ablaufzeit für das Zugriffstoken suchen.

Um das Zugriffstoken jederzeit zu aktualisieren, rufen Sie einfach /.auth/refresh in einer beliebigen Sprache auf. Im folgenden Codeausschnitt wird jQuery verwendet, um Ihre Zugriffstoken aus einem JavaScript-Client zu aktualisieren.

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

Wenn ein Benutzer die Ihrer App gewährten Berechtigungen widerruft, schlägt Ihr Aufruf von /.auth/me möglicherweise mit der Antwort 403 Forbidden fehl. Überprüfen Sie Ihre Anwendungsprotokolle auf Details, um Fehler zu diagnostizieren.

Verlängern der Toleranzperiode für das Sitzungstoken

Die authentifizierte Sitzung läuft nach acht Stunden ab. Nachdem eine authentifizierte Sitzung abgelaufen ist, gilt standardmäßig eine Toleranzperiode von 72 Stunden. Innerhalb dieser Toleranzperiode sind Sie berechtigt, das Sitzungstoken mit App Service zu aktualisieren, ohne den Benutzer erneut zu authentifizieren. Rufen Sie einfach /.auth/refresh auf, wenn Ihr Sitzungstoken ungültig wird. Sie müssen den Tokenablauf nicht selbst nachverfolgen. Nach Ablauf der 72-stündigen Toleranzperiode muss sich der Benutzer bzw. die Benutzerin neu anmelden, um ein gültiges Sitzungstoken zu erhalten.

Wenn 72 Stunden für Sie nicht ausreichend sind, können Sie dieses Ablauffenster erweitern. Die Erweiterung des Ablauffensters über einen langen Zeitraum kann sich erheblich auf die Sicherheit auswirken (z.B. wenn ein Authentifizierungstoken kompromittiert oder gestohlen wird). Daher wird empfohlen, den Standardwert von 72 Stunden beizubehalten oder den Ablaufzeitraum auf den kleinsten Wert festzulegen.

Zum Erweitern des standardmäßigen Ablauffensters führen Sie den folgenden Befehl in Cloud Shell aus.

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

Hinweis

Die Toleranzperiode gilt nur für die authentifizierte App Service-Sitzung, nicht jedoch für die Token von den Identitätsanbietern. Es gibt keine Toleranzperiode für die abgelaufenen Anbietertoken.

Nächste Schritte