Verwalten der Authentifizierung in Static Web Apps

Abgeschlossen

Ihre Web-App für Einkaufslisten benötigt eine Möglichkeit, ihre Benutzer*innen eindeutig zu identifizieren und ihnen einen persönlichen Bereich zum Speichern der Produkte zur Verfügung zu stellen.

Über die Authentifizierung verifizieren Sie die Identität eines Benutzers, der auf ein Informationssystem zugreifen möchte. Wir beschäftigen uns nun mit der Authentifizierung und ihrer Umsetzung in Azure Static Web Apps.

Identitätsanbieter

Mit Azure Static Web Apps wird der Authentifizierungsablauf optimiert, indem die Authentifizierung mit den folgenden Anbietern verwaltet wird:

  • Microsoft Entra ID
  • GitHub
  • X

Alle Authentifizierungsanbieter sind standardmäßig aktiviert. Wir sehen uns später an, wie Sie einen Authentifizierungsanbieter mit einer benutzerdefinierten Routenregel einschränken können.

Systemordner

Der Systemordner /.auth bietet Zugriff auf alle Authentifizierungs-APIs. Sie können mithilfe dieser Endpunkte einen vollständigen Workflow zur Authentifizierung in Ihrer Anwendung implementieren, einschließlich An- und Abmeldung und Zugriff auf Benutzerinformationen.

Anmelden

In der folgenden Tabelle sind die anbieterspezifischen Anmelderouten aufgeführt, die Sie in Ihrer App verwenden können.

Identitätsanbieter Anmelderoute
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github
X /.auth/login/x

Sie können mit dem folgenden Ausschnitt einen Anmeldelink in Ihre Web-App einfügen, um sich beispielsweise bei GitHub anzumelden:

<a href="/.auth/login/github">Login</a>

Wenn ein Benutzer nach der Anmeldung zu einer bestimmten Seite umgeleitet werden soll, können Sie auch eine URL im Parameter post_login_redirect_uri der Abfragezeichenfolge angeben. Beispiel:

<a href="/.auth/login/github?post_login_redirect_uri=/products">Login</a>

Logout

Über die Route /.auth/logout werden Benutzer von der Web-App abgemeldet. Sie können einen Link zu Ihrer Sitenavigation hinzufügen, um dem Benutzer das Abmelden zu ermöglichen. Dies ist im folgenden Beispiel dargestellt.

<a href="/.auth/logout">Log out</a>

Wie bei der Anmeldung können Sie mit dem Parameter post_logout_redirect_uri der Abfragezeichenfolge eine URL angeben, zu der nach der Abmeldung eine Umleitung erfolgen soll:

<a href="/.auth/logout?post_logout_redirect_uri=/home">Log out</a>

Zugreifen auf Benutzerinformationen

Sie können auf authentifizierungsbezogene Benutzerinformationen entweder über einen Endpunkt mit Direktzugriff oder einen speziellen Header in API-Funktionen zugreifen.

Wenn Sie eine GET-Anforderung an die Route /.auth/me senden, erhalten Sie ein JSON-Objekt mit den Daten des aktuell angemeldeten Benutzers. Für Anforderungen von nicht authentifizierten Benutzern wird null zurückgegeben.

Es folgt ein Beispiel eines Antwortobjekts:

{
  "identityProvider": "github",
  "userId": "d75b260a64504067bfc5b2905e3b8182",
  "userDetails": "github-user-example",
  "userRoles": [ "anonymous", "authenticated" ]
}

API-Funktionen

Alle in Azure Static Web Apps verfügbaren API-Funktionen haben Zugriff auf die gleichen Benutzerinformationen wie Ihre Clientanwendung. Die Benutzerdaten werden an Funktionen im HTTP-Header x-ms-client-principal weitergegeben. Die Daten werden als JSON-Objekt serialisiert und als Base64 codiert.

Die folgende Beispielfunktion zeigt, wie Benutzerinformationen gelesen und zurückgegeben werden:

module.exports = async function (context, req) {
  const header = req.headers["x-ms-client-principal"];
  const encoded = Buffer.from(header, "base64");
  const decoded = encoded.toString("ascii");

  context.res = {
    body: {
      userInfo: JSON.parse(decoded)
    }
  };
};

Nächste Schritte

Als Nächstes implementieren Sie einen vollständigen Authentifizierungsworkflow in Ihre App.

Überprüfen Sie Ihr Wissen

1.

Welches Routenmuster würden Sie verwenden, um eine Authentifizierungsanforderung zu stellen?