Toegang configureren voor providers en rollen

Voltooid

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.