Freigeben über


Lokale Authentifizierung im Daten-API-Generator

Wenn Sie eine Lösung mithilfe des Daten-API-Generators lokal entwickeln oder den Daten-API-Generator lokal ausführen, müssen Sie die konfigurierten Authentifizierungs- und Autorisierungsoptionen testen, indem Sie eine Anforderung mit einer bestimmten Rolle oder einem bestimmten Anspruch simulieren.

Um eine authentifizierte Anforderung zu simulieren, ohne einen Authentifizierungsanbieter zu konfigurieren (z. B. Microsoft Entra ID), können Sie entweder den Simulator Authentifizierungsanbieter oder StaticWebApps verwenden:

Verwenden des Anbieters Simulator

Simulator ist ein konfigurierbarer Authentifizierungsanbieter, der die Daten-API-Engine anweist, alle Anforderungen als authentifiziert zu behandeln.

  • Mindestens werden alle Anforderungen im Kontext der Systemrolle Authenticatedausgewertet.
  • Falls gewünscht, wird die Anforderung im Kontext einer beliebigen Rolle ausgewertet, die X-MS-API-ROLE im HTTP-Header angegeben ist.

Hinweis

Während die gewünschte Rolle berücksichtigt wird, funktionieren Autorisierungsberechtigungen, die Datenbankrichtlinien definieren, nicht, da benutzerdefinierte Ansprüche für den authentifizierten Benutzer beim Simulator Anbieter nicht festgelegt werden können. Fahren Sie mit dem Abschnitt Verwenden des Anbieters zum Testen von StaticWebApps Datenbankautorisierungsrichtlinien fort.

1. Aktualisieren des Authentifizierungsanbieters für die Laufzeitkonfiguration

Stellen Sie sicher, dass in der Konfigurationsdatei der Authentifizierungsanbieter und development -Simulatormodus angegeben ist. Weitere Informationen finden Sie in diesem Beispielkonfigurationsabschnitt host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. Geben Sie den Rollenkontext der Anforderung an.

Mit Simulator dem Authentifizierungsanbieter des Daten-API-Generators ist kein benutzerdefinierter Header erforderlich, um den Rollenkontext auf die Systemrolle Authenticatedfestzulegen:

curl --request GET \
  --url http://localhost:5000/api/books \

Um den Rollenkontext auf eine andere Rolle festzulegen, einschließlich der Systemrolle Anonymous, muss der X-MS-API-ROLE Header mit der gewünschten Rolle enthalten sein:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

Verwenden des Anbieters StaticWebApps

Der StaticWebApps Authentifizierungsanbieter weist den Daten-API-Generator an, nach einer Gruppe von HTTP-Headern zu suchen, die nur bei der Ausführung in einer Static Web Apps-Umgebung vorhanden sind. Der Client legt diese HTTP-Header fest, wenn sie lokal ausgeführt werden, um einen authentifizierten Benutzer zu simulieren, einschließlich aller Rollenmitgliedschaften oder benutzerdefinierten Ansprüche.

Hinweis

Vom Client bereitgestellte Instanzen des HTTP-Headers funktionieren nur bei der lokalen Entwicklung, X-MS-CLIENT-PRINCIPALda produktions- Azure Static Web Apps Umgebungen alle vom Client bereitgestellten Instanzen dieses Headers löschen.

Stellen Sie sicher, dass Sie in der Konfigurationsdatei den StaticWebApps Authentifizierungsanbieter verwenden. Weitere Informationen finden Sie in diesem Beispielkonfigurationsabschnitt host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Senden von Anforderungen, die einen generierten X-MS-CLIENT-PRINCIPAL Header bereitstellen

Sobald der Daten-API-Generator lokal ausgeführt und für die Verwendung des StaticWebApps Authentifizierungsanbieters konfiguriert ist, können Sie ein Clientprinzipalobjekt manuell mit der folgenden Vorlage generieren:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

Die authentifizierten Benutzermetadaten der statischen Web-App verfügen über die folgenden Eigenschaften:

Eigenschaft BESCHREIBUNG
identityProvider Alle Zeichenwerte.
userId Ein eindeutiger Bezeichner für den Benutzer.
userDetails Der Benutzername oder die E-Mail-Adresse des Benutzers.
userRoles Ein Array der zugewiesenen Rollen des Benutzers.

Hinweis

Wie in Static Web Apps Dokumentation erwähnt, enthält claims der X-MS-CLIENT-PRINCIPAL Header das Array nicht.

Um mit dem X-MS-CLIENT-PRINCIPAL Header übergeben zu werden, muss die JSON-Nutzlast Base64-codiert sein. Dazu können Sie ein beliebiges Online- oder Offlinetool verwenden. Ein solches Tool ist DevToys. Eine Base64-codierte Beispielnutzlast, die den JSON-Code darstellt, auf den zuvor verwiesen wurde:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

Die folgende cURL-Anforderung simuliert einen authentifizierten Benutzer, der die Liste der verfügbaren Book Entitätsdatensätze im Kontext der author Rolle abruft:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'