Toegang configureren voor providers en rollen
Als gebruikersverificatie is ingesteld, heeft uw web-app voor boodschappenlijsten een manier nodig om de toegang tot bepaalde pagina's te beperken voor gebruikers die niet zijn aangemeld en alleen aanmelding via specifieke providers toe te staan.
We kijken naar routeringsconfiguratie en -rollen in Azure Static Web Apps om de toegang van gebruikers tot onze web-app af te stemmen.
Configuratiebestand voor Azure Static Web Apps
Configuratie voor Azure Static Web Apps wordt gedefinieerd in het staticwebapp.config.json
bestand, waarmee de volgende instellingen worden beheerd:
- Routering
- Verificatie
- Autorisatie
- Terugvalregels
- HTTP-antwoordoverschrijvingen
- Globale HTTP-headerdefinities
- Aangepaste MIME-typen
De aanbevolen locatie voor de staticwebapp.config.json
locatie bevindt zich in de map die is ingesteld als de app_location
instelling die we tijdens de implementatie hebben gekozen. Het bestand kan echter op elke locatie in de broncodemap van uw toepassing worden geplaatst.
Voor onze use-case kijken we naar routeringsconfiguratie om te bereiken wat we willen.
Verificatieproviders beperken
In een vorige sectie hebben we gezien dat standaard alle verificatieproviders zijn ingeschakeld. We kunnen dit wijzigen door routeringsregels toe te voegen in de configuratie.
Als u bijvoorbeeld aanmelding via de GitHub-provider wilt uitschakelen, kunt u een routeringsregel zoals deze toevoegen aan het staticwebapp.config.json
bestand.
{
"routes": [
{
"route": "/.auth/login/github",
"statusCode": 404
}
]
}
We dwingen af dat de route /.auth/login/github
die wordt gebruikt voor verificatie met de GitHub-provider een 404
(niet gevonden) fout retourneert, zodat de gebruikers er geen toegang toe hebben. U kunt zoveel routesregels toevoegen die we willen uitschakelen voor alle providers die u niet wilt gebruiken.
Routes beveiligen met rollen
Routes zijn standaard zonder beperkingen toegankelijk voor iedereen. U kunt routes beveiligen door een of meer rolnamen toe te voegen aan de matrix van allowedRoles
een regel. Standaard behoort elke gebruiker tot de ingebouwde anonymous
rol en zijn alle aangemelde gebruikers lid van de authenticated
rol.
Dit betekent dat u een route wilt beperken tot alleen geverifieerde gebruikers. U kunt de ingebouwde authenticated
rol toevoegen aan de allowedRoles
matrix.
{
"routes": [
{
"route": "/profile",
"allowedRoles": ["authenticated"]
}
]
}
Als een niet-geverifieerde gebruiker met deze configuratie probeert toegang te krijgen tot de /profile
route, wordt er een fout 401
(niet geautoriseerd) geretourneerd.
U kunt ook specifieke HTTP-methoden voor een bepaalde route beperken, zoals hieronder:
{
"routes": [
{
"route": "/profile",
"methods": ["PUT", "POST", "DELETE"],
"allowedRoles": ["authenticated"]
}
]
}
In dit voorbeeld hebben alle gebruikers toegang tot de GET
methode op de /profile
route, maar alleen geverifieerde gebruikers kunnen gebruiken PUT
, POST
of DELETE
.
Een jokerteken gebruiken
U kunt een jokerteken aan het einde van de route gebruiken om alle routes te vinden volgens het basispatroon. Als u bijvoorbeeld alle URL's wilt beperken die beginnen met /api
geverifieerde gebruikers, kunt u het volgende schrijven:
{
"routes": [
{
"route": "/api/*",
"allowedRoles": ["authenticated"]
}
]
}
Volgende stappen
Vervolgens implementeren we toegangsbeperkingen in onze app.