Konfigurace přístupu pro poskytovatele a role
Při ověřování uživatelů potřebuje webová aplikace nákupního seznamu způsob, jak omezit přístup k některým stránkám pro uživatele, kteří nejsou přihlášení, a povolit přihlášení jenom prostřednictvím konkrétních poskytovatelů.
Podíváme se na konfiguraci směrování a role ve službě Azure Static Web Apps, abychom vyladili přístup uživatelů k naší webové aplikaci.
Konfigurační soubor pro Azure Static Web Apps
Konfigurace pro Azure Static Web Apps je definována staticwebapp.config.json
v souboru, který řídí následující nastavení:
- Směrování
- Authentication
- Autorizace
- Náhradní pravidla
- Přepsání odpovědí HTTP
- Globální definice hlaviček HTTP
- Vlastní typy MIME
Doporučené umístění je staticwebapp.config.json
ve složce nastavené jako app_location
nastavení, které jsme zvolili během nasazení. Soubor se ale může umístit do libovolného umístění ve složce zdrojového kódu vaší aplikace.
V našem případě použití se podíváme na konfiguraci směrování, abychom dosáhli toho, co chceme.
Omezení zprostředkovatelů ověřování
V předchozí části jsme viděli, že ve výchozím nastavení jsou všichni zprostředkovatelé ověřování povoleni. To můžeme změnit přidáním pravidel směrování do konfigurace.
Pokud například chcete zakázat přihlášení prostřednictvím poskytovatele GitHubu, můžete do souboru přidat pravidlo směrování, jako je staticwebapp.config.json
toto.
{
"routes": [
{
"route": "/.auth/login/github",
"statusCode": 404
}
]
}
Trasu /.auth/login/github
použitou k ověření u poskytovatele GitHubu vynutíme, aby vrátila 404
(nenalezena) chybu, aby k ní uživatelé nemohli získat přístup. Můžete přidat tolik pravidel tras, která chceme zakázat všem poskytovatelům, které nechcete používat.
Zabezpečení tras pomocí rolí
Trasy jsou ve výchozím nastavení přístupné všem bez jakýchkoli omezení. Trasy můžete zabezpečit přidáním jednoho nebo více názvů rolí do pole pravidla allowedRoles
. Ve výchozím nastavení patří každý uživatel k předdefinované anonymous
roli a všichni přihlášení uživatelé jsou členy authenticated
této role.
To znamená, že chcete omezit trasu jenom na ověřené uživatele, můžete do allowedRoles
pole přidat předdefinovanou authenticated
roli.
{
"routes": [
{
"route": "/profile",
"allowedRoles": ["authenticated"]
}
]
}
Pokud se v této konfiguraci pokusí neověřený uživatel získat přístup /profile
k trase, vrátí se chyba 401
(neautorizováno).
Můžete také omezit konkrétní metody HTTP pro danou trasu, například následující:
{
"routes": [
{
"route": "/profile",
"methods": ["PUT", "POST", "DELETE"],
"allowedRoles": ["authenticated"]
}
]
}
V tomto příkladu GET
mají všichni uživatelé přístup k metodě na /profile
trase, ale pouze ověření uživatelé mohou používat PUT
, POST
nebo DELETE
.
Použití zástupné kóty
Pomocí zástupného znaku na konci trasy můžete odpovídat všem trasám, které následují za základním vzorem. Pokud například chcete omezit všechny adresy URL začínající /api
na ověřené uživatele, můžete napsat:
{
"routes": [
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
}
]
}
Další kroky
V dalším kroku implementujeme omezení přístupu v naší aplikaci.