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 leesrechtensite-{siteAlias}-read-> leesrechten voor specifieke sitesite-{siteAlias}-publish-> publishrechten voor specifieke sitesite-{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 endpointAuthorize(Policy = IproxPolicyNames.IproxRead)Voor applicatiebrede leesrechtenIproxSiteReadWithAliasAuthorize("{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 endpointIproxSiteEditWithAliasAuthorize("{pagetype.Site.Alias}")Voor sitespecifieke edit rechten in een specifieke (gegenereerde) pagina.
Publish
Authorize(Policy = IproxPolicyNames.IproxSitePublish)Voor sitespecifieke publish rechten in een generiek endpointIproxSitePublishWithAliasAuthorize("{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.