Konfigurieren des Zugriffs für Anbieter und Rollen
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.