Doelgroepscheiding

Gemaakt door Mark Duijkers, Gewijzigd op Vr, 23 Sep, 2022 om 1:56 PM op Mark Duijkers


Met de doelgroepscheiding kan content (menuitems, pagina's, controls en controls in controls) verborgen of getoond worden o.b.v. de doelgroepen die aan de ingelogde gebruiker zijn gekoppeld.


  • Doelgroepen en categorieën worden gedefinieerd in de web.config van de website.
  • Per doelgroep kan worden opgegeven bij welke inlogmethode(s) deze beschikbaar is.
  • De doelgroepen die aan een gebruiker zijn gekoppeld worden opgeslagen in een SQL database.
  • Doelgroepen van een gebruiker worden bij een inlog:
    • Ingesteld als Claims
    • Ingesteld als Rollen
  • Als een gebruiker nog geen doelgroepen heeft gekoppeld:
    • Na het inloggen wordt er geredirect naar de doelgroeppagina waar de gebruiker doelgroepen kan koppelen aan zichzelf.
    • Er wordt op elke pagina bovenin de pagina een balk getoond met een melding dat er nog geen doelgroepen zijn gekoppeld aan de gebruiker met een link naar de doelgroeppagina.
  • De koppeling van doelgroepen aan menu-items gebeurt via rollen in de sitemap.
  • De koppeling van doelgroepen aan pagina's, controls worden gedefinieerd in de web.config van de website o.b.v. (gedeeltelijke) pagina-url, hiërarchische structuur van controls en control-ID's.



Voorbereiding


Doelgroepen en categorieën bepalen

  • Welke doelgroepen beschikbaar moeten zijn is iets dat klantspecifiek is.
  • De naam mag alles zijn wat je wilt en wordt gebruikt om aan de gebruiker te tonen.
  • Het id echter moet uniek zijn binnen de doelgroepen, en ook binnen de rollen die gebruikt worden op de MijnOmgeving. Dit ivm het gebruiken van de doelgroepen in de sitemap voor het menu.
  • Ook de categorisatie is klantspecifiek. Er is minimaal 1 categorie nodig, maar er mogen meerdere gedefinieerd worden. Wel mag een doelgroep maar in 1 categorie zitten.

Bepalen bij welke inlogmethodes welke doelgroepen beschikbaar moeten worden

  • Elke doelgroep kan gekoppeld worden aan 1 of meerdere loginmethodes:
    • Forms login (gebruikersnaam/wachtwoord)
    • Windows login (Active Directory)
    • Specifieke SAML verbindingen
  • Het effect hiervan is dat de betreffende doelgroep alleen beschikbaar is als er met een inlogmethode is ingelogd die aan staat bij de doelgroep.
  • Als er, na het filteren op loginmethode, geen doelgroepen in een doelgroepcategorie overblijven, wordt deze categorie ook niet getoond op de doelgroeppagina.

Bepalen welke pagina's (urls) er afgeschermd moeten worden

  • In de web.config kunnen in de sectie mijnomgeving.targetGroups/access specifieke pagina's worden toegelaten voor een bepaalde set (1 of meer) doelgroepen.
  • Een gedeelte van de url van de pagina dient te worden ingevuld. Let op dat dit het laatste stuk is van de url.
    • Laat domein en eventuele subfolder van de root van de website achterwege.
    • Ook het eventuele taal-onderdeel op de url moet worden vermeden.
  • Ook scenario's en formulieren vallen hieronder.
    • Let op dat je de stapnaam niet in de url opneemt, zodat het hele formulier in 1x beschermd is.
  • De pagina die je wilt targetten moet afstammen van MijnOmgeving.Events.UI.Page (i.p.v. System.Web.UI.Page).
    • Alle meegeleverde pagina's binnen de templateMijnOmgeving zijn al op deze manier ingesteld.



Configuratie

Doelgroepen + categorieën + inlogmethodes


De target groups kunnen (in de standaard functionaliteit) worden geconfigureerd via de web.config. Daarvoor is de volgende configuratiesectie benodigd:


<configSections>
 <section name="mijnomgeving.targetGroups" type="MijnOmgeving.TargetGroups.Configuration.TargetGroupsConfigurationSection, MijnOmgeving.TargetGroups" />
</configSections>


Vanaf dat moment kunnen de target groups worden ingesteld via de volgende configuratietag (in dit voorbeeld zijn er 5 target groups gedefinieerd binnen 2 categorieën):


<mijnomgeving.targetGroups>
 <targetGroups>
  <targetGroup id="Slachthuizen" name="Slachthuizen" category="Verwerkingsbedrijven" forms="true" windows="false" authenticationBrokers="Digid" />
  <targetGroup id="KoelEnVrieshuizen" name="Koel- en vrieshuizen" category="Verwerkingsbedrijven" forms="true" windows="false" authenticationBrokers="Digid" />
  <targetGroup id="ImporteursPlantaardig" name="Importeurs van planten, groenten, fruit, plantaardig materiaal" category="Import- en exportbedrijven" forms="true" windows="true" authenticationBrokers="Digid" />
  <targetGroup id="ExporteursDieren" name="Exporteurs van dieren en levende dierlijke producten" category="Import- en exportbedrijven" forms="true" windows="true" authenticationBrokers="Digid" />
  <targetGroup id="OverigeVleesExporterendeBedrijven" name="Overige vleesexporterende bedrijven" category="Import- en exportbedrijven" forms="true" windows="true" authenticationBrokers="Digid" />
 </targetGroups>
</mijnomgeving.targetGroups>


De <targetGroup />-tag heeft de volgende attributen die kunnen worden ingesteld:


<targetGroup id="..." name="..." category="..." forms="true/false" windows="true/false" authenticationBrokers="..., ..., ..." />


AttribuutVerplicht

Beschrijving

idJaHet id van de target group. Deze wordt gebruikt als naam voor de in te stellen claim als er wordt ingelogd.
name Ja

De naam wordt getoond bij het kiezen en tonen van de target groups door/voor de huidige ingelogde gebruiker.

categoryJaDe categorie waarbinnen de target group valt. Hiermee kunnen meerdere target groups worden onderverdeeld in categorieën.
forms
Nee
Indien deze op true wordt gezet is de target group beschikbaar voor forms-login (gebruikersnaam/wachtwoord).
windows
Nee

Indien deze op true wordt gezet is de target group beschikbaar voor Windows-login (active directory).

authenticationBrokers
Nee

Komma-gescheiden lijst van authentication broker namen (SAML-connecties) zoals gedefinieerd in TriplEforms.


Event handler configuratie


Er zijn 5 events voor het afhandelen van de Target Group functionaliteit binnen de MijnOmgeving:


OnGetEnabledUserTargetGroups

OnGetUserHasTargetGroupsSelected

OnGetUserNeedsTargetGroupsSelection

OnGetTargetGroupsDefinedForUser

OnSetEnabledUserTargetGroups


Alle 5 de event handlers dienen te worden ingesteld om de target group functionaliteit aan te zetten.

  • Als geen van deze 5 is ingesteld is de target group functionaliteit uitgeschakeld.
  • Als er minimaal 1 is gedefinieerd, maar niet alle 5, dan wordt een Exception getoond met de ontbrekende event handlers.


Om de standaard Target Group functionaliteit aan te zetten dienen de volgende event handlers te worden ingesteld:


<mijnomgeving.events>
 <event event="OnGetEnabledUserTargetGroups" type="MijnOmgeving.TargetGroups.Events.DefaultEventHandlers, MijnOmgeving.TargetGroups" method="OnGetEnabledUserTargetGroups" />
 <event event="OnGetUserHasTargetGroupsSelected" type="MijnOmgeving.TargetGroups.Events.DefaultEventHandlers, MijnOmgeving.TargetGroups" method="OnGetUserHasTargetGroupsSelected" />
 <event event="OnGetUserNeedsTargetGroupsSelection" type="MijnOmgeving.TargetGroups.Events.DefaultEventHandlers, MijnOmgeving.TargetGroups" method="OnGetUserNeedsTargetGroupsSelection" />
 <event event="OnGetTargetGroupsDefinedForUser" type="MijnOmgeving.TargetGroups.Events.DefaultEventHandlers, MijnOmgeving.TargetGroups" method="OnGetTargetGroupsDefinedForUser" />
 <event event="OnSetEnabledUserTargetGroups" type="MijnOmgeving.TargetGroups.Events.DefaultEventHandlers, MijnOmgeving.TargetGroups" method="OnSetEnabledUserTargetGroups" />
</mijnomgeving.events>


OnGetEnabledUserTargetGroups

Deze event handler haalt de target groups op die zijn gekozen door/voor de gebruiker en retourneert dan ook een List<UserTargetGroup>. De standaard functionaliteit haalt deze op uit de SQL database op basis van de LoginMethod en het UserId van de gebruiker.


OnGetUserNeedsTargetGroupsSelection

Deze event handler bepaalt of de gebruiker minimaal 1 target group heeft gekozen, en retourneert dan ook een boolDe standaard functionaliteit controleert of er in de SQL database op basis van de LoginMethod en het UserId van de gebruiker target groups zijn gekozen.


OnGetUserNeedsTargetGroupsSelection

Deze event hjandler bepaalt of de gebruiker nog een doelgroep moet kiezen, en retourneert dan ook een bool. De standaard functionaliteit controleert of er überhaupt target groups zijn gedefinieerd in de configuratie en of de gebruiker al een target group heeft gekozen.


OnGetTargetGroupsDefinedForUser

Deze event handler haalt de lijst van beschikbare geconfigureerde target groups op voor de gebruiker, en retourneert dan ook een List<TargetGroupCategory> met binnen elke category een List<TargetGroups>. De standaard functionaliteit retourneert de in de web.config geconfigureerde target groups, gefilterd o.b.v. de gebruikte inlogmethode.


OnSetEnabledUserTargetGroups

Deze event handler slaat de gekozen target groups voor de gebruiker op. De standaard functionaliteit slaat de gekozen target groups op in de SQL database op basis van LoginMethod en UserId.


Sitemap aanpassen (doelgroepen als rollen instellen op menu-items)



Voorbeeld resultaat


We logging in met een DigiD gebruiker. De gebruiker heeft nog niet eerder zijn doelgroepen gekozen. 



We koppelen slachthuizen en afval aan de gebruiker


In het menu ziet hij nu de 2 groepen erbij staan





Was dit artikel nuttig?

Dat is fantastisch!

Hartelijk dank voor uw beoordeling

Sorry dat we u niet konden helpen

Hartelijk dank voor uw beoordeling

Laat ons weten hoe we dit artikel kunnen verbeteren!

Selecteer tenminste een van de redenen
CAPTCHA-verificatie is vereist.

Feedback verzonden

We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren