Konfigurieren des Zugriffs für Anbieter und Rollen

Abgeschlossen

Wenn die Benutzerauthentifizierung eingerichtet ist, benötigt Ihre Web-App für die Einkaufsliste eine Möglichkeit, den Zugriff auf einige Seiten für nicht angemeldete Benutzer zu beschränken und die Anmeldung nur über bestimmte Anbieter zuzulassen.

Sehen Sie sich die Routingkonfiguration und Rollen in Azure Static Web Apps an, um den Benutzerzugriff auf Ihre Web-App zu optimieren.

Konfigurationsdatei für Azure Static Web Apps

Die Konfiguration für Azure Static Web Apps erfolgt in der Datei staticwebapp.config.json, die die folgenden Einstellungen steuert:

  • Routing
  • Authentifizierung
  • Autorisierung
  • Fallbackregeln
  • Außerkraftsetzungen von HTTP-Antworten
  • Globale HTTP-Headerdefinitionen
  • Benutzerdefinierte MIME-Typen

Der empfohlene Speicherort für die staticwebapp.config.json befindet sich im Ordner, der als die bei der Bereitstellung gewählte Einstellung app_location festgelegt wurde. Die Datei kann jedoch an einem beliebigen Ort im Quellcodeordner Ihrer Anwendung abgelegt werden.

Für unseren Anwendungsfall sehen wir uns die Routingkonfiguration an, um das Gewünschte zu erreichen.

Einschränken von Authentifizierungsanbietern

In einem vorherigen Abschnitt haben wir gesehen, dass alle Authentifizierungsanbieter standardmäßig aktiviert sind. Wir können dies ändern, indem wir der Konfiguration Routingregeln hinzufügen.

Um z. B. die Anmeldung über den Anbieter GitHub zu deaktivieren, können Sie der Datei staticwebapp.config.json eine Routingregel wie die folgende hinzufügen.

{
  "routes": [
    {
      "route": "/.auth/login/github",
      "statusCode": 404
    }
  ]
}

Wir zwingen die Route /.auth/login/github, die zur Authentifizierung beim Anbieter GitHub verwendet wird, zur Rückgabe des Codes 404 (Nicht gefunden), sodass die Benutzer nicht darauf zugreifen können. Sie können so viele Routingregeln wie gewünscht hinzufügen, um alle Anbieter zu deaktivieren, die Sie nicht benötigen.

Schützen von Routen mit Rollen

Routen sind standardmäßig für alle Benutzer uneingeschränkt zugänglich. Sie können Routen schützen, indem dem Array allowedRoles einer Regel mindestens ein Rollenname hinzugefügt wird. Standardmäßig gehört jeder Benutzer zur integrierten Rolle anonymous, und alle angemeldeten Benutzer sind Mitglieder der Rolle authenticated.

Um also eine Route nur auf authentifizierte Benutzer zu beschränken, können Sie die integrierte Rolle authenticated dem Array allowedRoles hinzufügen.

{
  "routes": [
    {
      "route": "/profile",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Wenn bei dieser Konfiguration ein nicht authentifizierter Benutzer versucht, auf die Route /profile zuzugreifen, wird der Fehlercode 401 (Nicht autorisiert) zurückgegeben.

Sie können bestimmte HTTP-Methoden folgendermaßen für eine bestimmte Route einschränken:

{
  "routes": [
    {
      "route": "/profile",
      "methods": ["PUT", "POST", "DELETE"],
      "allowedRoles": ["authenticated"]
    }
  ]
}

Bei diesem Beispiel können alle Benutzer auf die Methode GET für die Route /profile zugreifen, aber nur authentifizierte Benutzer können PUT, POST oder DELETE verwenden.

Verwenden eines Platzhalters

Sie können einen Platzhalter an das Ende der Route setzen, um alle Routen abzugleichen, die dem Basismuster folgen. Um z. B. alle URLs, die mit /api beginnen, auf authentifizierte Benutzer zu beschränken, können Sie Folgendes schreiben:

{
  "routes": [
    {
      "route": "/api/*",
      "allowedRoles": ["authenticated"]
    }
  ]
}

Nächste Schritte

Als Nächstes implementieren Sie die Zugriffseinschränkungen in Ihre App.