Benutzerdefinierte Authentifizierung in Azure Static Web Apps

Azure Static Web Apps bietet verwaltete Authentifizierung, die von Azure verwaltete Anbieterregistrierungen verwendet. Um mehr Flexibilität bei der Registrierung zu ermöglichen, können Sie die Standardwerte mit einer benutzerdefinierten Registrierung überschreiben.

  • Mit der benutzerdefinierten Authentifizierung können Sie auch benutzerdefinierte Anbieter konfigurieren, die OpenID Connect unterstützen. Diese Konfiguration ermöglicht die Registrierung mehrerer externer Anbieter.

  • Wenn Sie benutzerdefinierte Registrierungen verwenden, werden alle vorkonfigurierten Anbieter deaktiviert.

Hinweis

Die benutzerdefinierte Authentifizierung ist nur im Azure Static Web Apps-Standardplan verfügbar.

Konfigurieren eines benutzerdefinierten Identitätsanbieters

Benutzerdefinierte Identitätsanbieter werden im Abschnitt auth der Konfigurationsdatei konfiguriert.

Um zu vermeiden, dass Geheimnisse in die Quellcodeverwaltung aufgenommen werden, sucht die Konfiguration in den Anwendungseinstellungen nach einem übereinstimmenden Namen in der Konfigurationsdatei. Sie können ihre Geheimnisse auch in Azure Key Vault speichern.

Um die Registrierung zu erstellen, müssen Sie zunächst die folgenden Anwendungseinstellungen vornehmen:

Einstellungsname Wert
AZURE_CLIENT_ID Die Anwendungs-ID (Client-ID) für die Microsoft Entra-App-Registrierung.
AZURE_CLIENT_SECRET Der geheime Clientschlüssel für die Microsoft Entra-App-Registrierung.

Verwenden Sie als Nächstes das folgende Beispiel, um den Anbieter in der Konfigurationsdatei zu konfigurieren.

Microsoft Entra-Anbieter sind in zwei verschiedenen Versionen verfügbar. Version 1 definiert userDetailsClaim explizit, wodurch in den Nutzdaten Benutzerinformationen zurückgegeben werden können. Im Gegensatz dazu gibt Version 2 standardmäßig Benutzerinformationen zurück und wird durch v2.0 in der openIdIssuer-URL festgelegt.

Microsoft Entra Version 1

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "userDetailsClaim": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET"
        }
      }
    }
  }
}

Stellen Sie sicher, dass Sie ihre Microsoft Entra-Mandanten-ID ersetzen <TENANT_ID> .

Microsoft Entra Version 2

{
  "auth": {
    "identityProviders": {
      "azureActiveDirectory": {
        "registration": {
          "openIdIssuer": "https://login.microsoftonline.com/<TENANT_ID>/v2.0",
          "clientIdSettingName": "AZURE_CLIENT_ID",
          "clientSecretSettingName": "AZURE_CLIENT_SECRET"
        }
      }
    }
  }
}

Stellen Sie sicher, dass Sie ihre Microsoft Entra-Mandanten-ID ersetzen <TENANT_ID> .

Weitere Informationen zum Konfigurieren der Microsoft Entra-ID finden Sie in der Dokumentation zur App-Dienstauthentifizierung/Autorisierung zur Verwendung einer vorhandenen Registrierung.

Informationen zum Konfigurieren, welche Konten sich anmelden können, finden Sie unter Ändern der von einer Anwendung unterstützten Konten, und beschränken Sie Ihre Microsoft Entra-App auf eine Gruppe von Benutzern in einem Microsoft Entra-Mandanten.

Hinweis

Während der Konfigurationsabschnitt für Die Microsoft Entra-ID lautet azureActiveDirectory, werden die Plattformalias aad in den URLs zum Anmelden, Abmelden und Löschen von Benutzerinformationen verwendet. Weitere Informationen finden Sie im Abschnitt Authentifizierung und Autorisierung.

Authentifizierungsrückrufe

Identitätsanbieter benötigen zur Ausführung von Anmeldungs- oder Abmeldungsanforderungen eine Umleitungs-URL. Die meisten Anbieter erfordern, dass Sie die Rückruf-URLs einer Zulassungsliste hinzufügen. Die folgenden Endpunkte sind als Umleitungsziele verfügbar.

Typ URL-Muster
Anmelden https://<YOUR_SITE>/.auth/login/<PROVIDER_NAME_IN_CONFIG>/callback
Logout https://<YOUR_SITE>/.auth/logout/<PROVIDER_NAME_IN_CONFIG>/callback

Wenn Sie Die Microsoft Entra-ID verwenden, verwenden Sie aad sie als Wert für den <PROVIDER_NAME_IN_CONFIG> Platzhalter.

Hinweis

Diese URLs werden von Azure Static Web Apps bereitgestellt, um die Antwort vom Authentifizierungsanbieter zu empfangen. Sie müssen keine Seiten auf diesen Routen erstellen.

Anmeldung, Abmeldung und Benutzerdetails

Um einen benutzerdefinierten Identitätsanbieter zu verwenden, verwenden Sie die folgenden URL-Muster.

Aktion Muster
Anmelden /.auth/login/<PROVIDER_NAME_IN_CONFIG>
Logout /.auth/logout
Benutzerdetails /.auth/me
Bereinigen von Benutzerdetails /.auth/purge/<PROVIDER_NAME_IN_CONFIG>

Wenn Sie Die Microsoft Entra-ID verwenden, verwenden Sie aad sie als Wert für den <PROVIDER_NAME_IN_CONFIG> Platzhalter.

Rollen verwalten

Jeder Benutzer, der auf eine statische Web-App zugreift, gehört mindestens einer Rolle an. Benutzer können zwei integrierten Rollen angehören:

  • anonym: Alle Benutzer gehören automatisch zur anonymen Rolle.
  • authenticated: Alle Benutzer, die angemeldet sind, gehören der Rolle authenticated an.

Zusätzlich zu den integrierten Rollen können Sie Benutzern benutzerdefinierte Rollen zuweisen und in der Datei staticwebapp.config.json darauf verweisen.

Hinzufügen eines Benutzers zu einer Rolle

Um einen Benutzer zu einer Rolle hinzuzufügen, generieren Sie Einladungen, mit denen Sie Benutzer bestimmten Rollen zuordnen können. Rollen werden in der Datei staticwebapp.config.json definiert und verwaltet.

Einladung erstellen

Einladungen gelten spezifisch für einzelne Autorisierungsanbieter. Aus diesem Grund sollten Sie die Anforderungen Ihrer App beachten, wenn Sie die zu unterstützenden Anbieter auswählen. Einige Anbieter legen die E-Mail-Adresse eines Benutzers offen, während andere nur den Benutzernamen für die Website angeben.

Autorisierungsanbieter Verfügbar gemacht
Microsoft Entra ID E-Mail-Adresse
GitHub username
Twitter username

Führen Sie die folgenden Schritte aus, um eine Einladung zu erstellen.

  1. Navigieren Sie im Azure-Portal zu einer Static Web Apps-Ressource.
  2. Wählen Sie unter Einstellungen die Option Rollenverwaltung aus.
  3. Wählen Sie Einladen aus.
  4. Wählen Sie in der Liste mit den Optionen den Eintrag Autorisierungsanbieter aus.
  5. Fügen Sie im Feld Invitee details (Details zum Eingeladenen) den Benutzernamen oder die E-Mail-Adresse des Empfängers hinzu.
    • Geben Sie bei GitHub und Twitter den Benutzernamen ein. Geben Sie für alle anderen Anbieter die E-Mail-Adresse des Empfängers ein.
  6. Wählen Sie im Dropdownmenü Domäne die Domäne Ihrer statischen Website aus.
    • Die von Ihnen ausgewählte Domäne ist die Domäne, die in der Einladung angezeigt wird. Falls Ihrer Website eine benutzerdefinierte Domäne zugeordnet ist, wählen Sie die benutzerdefinierte Domäne aus.
  7. Fügen Sie im Feld Rolle eine Liste mit Rollennamen (durch Kommas getrennt) ein.
  8. Geben Sie die Anzahl von Stunden für die maximale Gültigkeitsdauer der Einladung ein.
    • Die Obergrenze beträgt 168 Stunden (sieben Tage).
  9. Wählen Sie Generieren aus.
  10. Kopieren Sie den Link aus dem Feld Einladungslink.
  11. Senden Sie eine E-Mail mit dem Einladungslink an den Benutzer, dem Sie Zugriff gewähren möchten.

Wenn der Benutzer in der Einladung den Link auswählt, wird er aufgefordert, sich mit seinem entsprechenden Konto anzumelden. Nach der erfolgreichen Anmeldung wird der Benutzer den ausgewählten Rollen zugeordnet.

Achtung

Stellen Sie sicher, dass Ihre Routenregeln nicht in Konflikt mit Ihren ausgewählten Authentifizierungsanbietern stehen. Wenn ein Anbieter durch eine Routenregel blockiert wird, können Benutzer keine Einladungen akzeptieren.

Aktualisieren von Rollenzuweisungen

  1. Navigieren Sie im Azure-Portal zu einer Static Web Apps-Ressource.
  2. Wählen Sie unter Einstellungen die Option Rollenverwaltung aus.
  3. Wählen Sie den Benutzer aus der Liste aus.
  4. Bearbeiten Sie die Liste mit den Rollen im Feld Rolle.
  5. Wählen Sie Update.

Benutzer entfernen

  1. Navigieren Sie im Azure-Portal zu einer Static Web Apps-Ressource.
  2. Wählen Sie unter Einstellungen die Option Rollenverwaltung aus.
  3. Suchen Sie in der Liste nach dem Benutzer.
  4. Aktivieren Sie das Kontrollkästchen in der Zeile des Benutzers.
  5. Klicken Sie auf Löschen.

Beachten Sie beim Entfernen eines Benutzers Folgendes:

  • Wenn ein Benutzer entfernt wird, werden seine Berechtigungen ungültig.
  • Die weltweite Verteilung kann einige Minuten dauern.
  • Wenn der Benutzer wieder der App hinzugefügt wird, ändert sich die userId.

Nächste Schritte