Skip to main content

Authorizatie

Authorizatie geschiedt op basis van claims in het jwt token

Config

Om ervoor te zorgen dat er authorizatie uitgevoerd kan worden moet de API worden gegenereerd met Bearer Authenticatie. Geen Bearer Authenticatie betekent dat er geen tokens zijn en geen claims om te valideren.

Daarnaast is het noodzakelijk om in de (locale) appsettings.json aan te geven of er gebruik gemaakt wordt van authenticatie. Dit kan je doen in het volgende pad:

BearerAuthentication:Enabled

Als deze waarde op true staat, dan wordt authorizatie uitgevoerd dmv de claims in de tokens, als deze false staat dan zijn alle Get endpoints vrij toegankelijk, en alle Post, Patch & Delete endpoints niet toegankelijk.

Samenstelling claims

De claims worden gemaakt bij het inloggen van de gebruiker. Alle rechten van de inloggende gebruiker worden samengevoegd en vertaald naar claims.

Er zijn read, edit en publish claims. Deze kunnen gelden voor de hele applicatie, of voor verschillende sites. Ze zien er alsvolgt uit:

  • site-read -> applicatiebrede leesrechten
  • site-{siteAlias}-read -> leesrechten voor specifieke site
  • site-{siteAlias}-publish -> publishrechten voor specifieke site
  • site-{siteAlias}-edit -> editrechten voor specifieke site

Validatie

De validatie van de endpoints gebeurt op endpoint niveau met behulp van policies. Er zijn verschillende attributen die op een endpoint toegevoegd kunnen worden die ervoor zorgen dat de validatie plaats vindt.

Validatie Get requests

Voor het valideren van een query zijn er 3 attributen beschikbaar:

  • Authorize(Policy = IproxPolicyNames.IproxSiteRead) Voor sitespecifieke leesrechten in een generiek endpoint
  • Authorize(Policy = IproxPolicyNames.IproxRead) Voor applicatiebrede leesrechten
  • IproxSiteReadWithAliasAuthorize("{pagetype.Site.Alias}") Voor sitespecifieke leesrechten in een specifieke (gegenereerde) pagina.

Validatie Post, Patch & Delete commands

Voor het valideren van een Post, Patch of Delete zijn er 6 attributen beschikbaar:

Edit

  • Authorize(Policy = IproxPolicyNames.IproxSiteEdit) Voor sitespecifieke edit rechten in een generiek endpoint
  • IproxSiteEditWithAliasAuthorize("{pagetype.Site.Alias}") Voor sitespecifieke edit rechten in een specifieke (gegenereerde) pagina.

Publish

  • Authorize(Policy = IproxPolicyNames.IproxSitePublish) Voor sitespecifieke publish rechten in een generiek endpoint
  • IproxSitePublishWithAliasAuthorize("{pagetype.Site.Alias}") Voor sitespecifieke publish rechten in een specifieke (gegenereerde) pagina.

Let op, publish rechten voldoen ook aan edit validatie. Als je kan publiceren, heb je al edit rechten.

Gegenereerde code

De attributen worden bij het genereren van de code alleen toegevoegd als je code genereert met Bearer Authenticatie. De attributen die op de endpoints staan werken niet als de applicatie runt in anonumous authenticatie mode.