Konfigurera åtkomst för leverantörer och roller
Med användarautentisering på plats behöver din webbapp i inköpslistan ett sätt att begränsa åtkomsten till vissa sidor för användare som inte är inloggade och endast tillåta inloggning via specifika leverantörer.
Vi ska titta på routningskonfiguration och roller i Azure Static Web Apps för att finjustera användaråtkomsten till vår webbapp.
Konfigurationsfil för Azure Static Web Apps
Konfigurationen för Azure Static Web Apps definieras i staticwebapp.config.json
filen, som styr följande inställningar:
- Routning
- Autentisering
- Auktorisering
- Reservregler
- Åsidosättningar av HTTP-svar
- Globala HTTP-huvuddefinitioner
- Anpassade MIME-typer
Den rekommenderade platsen för staticwebapp.config.json
är i mappuppsättningen som den app_location
inställning som vi valde under distributionen. Filen kan dock placeras på valfri plats i programkällkodsmappen.
I vårt användningsfall tittar vi på routningskonfigurationen för att uppnå det vi vill ha.
Begränsa autentiseringsprovidrar
I ett tidigare avsnitt såg vi att alla autentiseringsprovidrar är aktiverade som standard. Vi kan ändra det genom att lägga till routningsregler i konfigurationen.
Om du till exempel vill inaktivera inloggning via GitHub-providern kan du lägga till en routningsregel som den här i staticwebapp.config.json
filen.
{
"routes": [
{
"route": "/.auth/login/github",
"statusCode": 404
}
]
}
Vi tvingar den väg /.auth/login/github
som används för att autentisera med GitHub-providern att returnera ett 404
(hittades inte) fel, så att användarna inte kan komma åt den. Du kan lägga till så många routningsregler som vi vill inaktivera alla leverantörer som du inte vill använda.
Säkra vägar med roller
Vägar är som standard tillgängliga för alla utan begränsningar. Du kan skydda vägar genom att lägga till ett eller flera rollnamn i en regels allowedRoles
matris. Som standard tillhör varje användare den inbyggda anonymous
rollen och alla inloggade användare är medlemmar authenticated
i rollen.
Det innebär att du kan begränsa en väg till endast autentiserade användare genom att lägga till den inbyggda rollen i authenticated
matrisen allowedRoles
.
{
"routes": [
{
"route": "/profile",
"allowedRoles": ["authenticated"]
}
]
}
Med den konfigurationen returneras ett fel /profile
(obehörig) om en oautentiserad användare försöker komma åt 401
vägen.
Du kan också begränsa specifika HTTP-metoder för en viss väg, till exempel följande:
{
"routes": [
{
"route": "/profile",
"methods": ["PUT", "POST", "DELETE"],
"allowedRoles": ["authenticated"]
}
]
}
I det här exemplet kan alla användare komma åt GET
metoden på vägen, men endast autentiserade /profile
användare kan använda PUT
, POST
eller DELETE
.
Använda ett jokertecken
Du kan använda ett jokertecken i slutet av vägen för att matcha alla vägar enligt basmönstret. Om du till exempel vill begränsa alla URL:er som börjar med /api
till autentiserade användare kan du skriva:
{
"routes": [
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
}
]
}
Nästa steg
Därefter implementerar vi åtkomstbegränsningar i vår app.