Document toolboxDocument toolbox

Documentatie voor klanten en partners van Digitaal Vlaanderen - bouwstenen Mijn Burgerprofiel, Verenigingsloket en e-loketondernemers


Aanmelden met eenvoudig of gekoppeld toegangsbeheer

Eenvoudig vs. gekoppeld toegangsbeheer

De global header integreren op een gastwebsite kan op de volgende 2 manieren:

Ook bij een global header met eenvoudig toegangsbeheer is de link naar het e-loket ondernemers en het Verenigingsloket beschikbaar.

  • Met gekoppeld toegangsbeheer: gebruikers kunnen meteen aanmelden in verschillende doelgroepen via ACM/IDM, bijv. als burger, als ambtenaar en/of als economische actor. De gastwebsite moet hiervoor de doelgroepswissel expliciet toevoegen. Het openen van het pad dat bij die wissel hoort (switchCapacityUrl), start de flow voor gericht aanmelden. Zie ook: Wisselen van account (doelgroepen)

Om gericht te kunnen aanmelden en de gebruiker de keuze te geven tussen meerdere doelgroepen, moet Toegangsbeheer (ACM) eerst valideren dat de gevraagde identiteit een toegelaten identiteit is. Zie ook de ACM-technische informatie “Gericht aanmelden”. De doelgroep zelf wordt bepaald in de ACM-schermen. De global header reageert op basis van de informatie in de ACM-schermen.

Zie ook: https://www.vlaanderen.be/acm-idm-standaard-aansluitingsproces

 

Integratie van de global header met eenvoudig toegangsbeheer (ACM)

Voor elke gastwebsite die de global header aanbiedt, moet er een integratie bestaan die de activiteit van de burger met de global header meldt aan de header. Hiervoor moet er minimaal eenvoudig toegangsbeheer (AuthentiCation Management of ACM) aanwezig zijn zodat:

  • de gebruiker zich kan aanmelden

  • het gedrag tussen de website en de global header consistent blijft

Voor meer informatie over een koppeling met ACM, zie https://www.vlaanderen.be/acm-idm-standaard-aansluitingsproces .

Start de koppeling met de global header en kies in het formulier voor eenvoudig toegangsbeheer.

Integratie van de global header met gekoppeld toegangsbeheer (ACM + Single Sign-on)

Naast de algemene integratieregels, die van toepassing zijn voor elke website, bestaan er ook een aantal extra vereisten voor websites met gekoppeld toegangsbeheer.

  • Activiteitstracking

  • De status van de sessie rapporteren

  • De aanvragen voor applicatie logout afhandelen

  • Login en Logout endpoint

Start de koppeling met de global header en kies in het formulier voor gekoppeld toegangsbeheer.

Activiteitstracking

Met activiteitstracking wordt nagegaan of een gebruiker actief is met de global header. Bij inactiviteit van 20 minuten wordt de gebruiker automatisch afgemeld.

Activiteitstracking is optioneel en enkel te gebruiken indien de gastwebsite bijv. bijkomende user tracking nodig heeft. Dit kan het geval zijn wanneer er een iframe op de pagina dat niet standaard getraceerd wordt.

Om de activiteitstracking voor een webpagina correct te laten werken, moet de extensie op de hoogte blijven van activiteit op de webpagina. In het onderstaande codevoorbeeld staat een eenvoudige manier om activiteit van een gebruiker te detecteren en te rapporteren aan de extensie.

// Capture any widget that is present or will be present on the webpage. vl.widget.client.capture(function (widget) { // Only process the widget if widget is a global header. if (widget.getPluginTypeId() === 'global_header') { // Get the Citizen Profile Session extension from the global header widget. widget.getExtension('citizen_profile.session').then(function (session) { /** * Event handler which extends a Citizen Profile session. */ function activityEventHandler() { // Inform the Citizen Profile Session extension about activity. session.extend(); } // Build a list of event names which should be used for activity tracking. var eventNames = [ 'mousedown', 'mousemove', 'mousewheel', 'DOMMouseScroll', 'scroll', 'wheel', 'keydown', 'keypress', 'touchmove', 'touchstart' ]; // Iterate through the events names. for (var i = 0; i < eventNames.length; i++) { // Register our event handler given event name. window.addEventListener(eventNames[i], activityEventHandler); } }); } });

Activiteit tracken voor websites met ACM

Elke website moet activiteit tracken. Maar websites met SSO-ondersteuning (en ACM) hebben een aantal bijkomende vereisten voor veiligheid en integratie, zoals getoond in de onderstaande voorbeelden:

De status van de sessie rapporteren
// Capture any widget that is present or will be present on the webpage. vl.widget.client.capture(function (widget) { // Only process the widget if widget is a global header. if (widget.getPluginTypeId() === 'global_header') { // Get the Citizen Profile Session extension from the global header widget. widget.getExtension('citizen_profile.session').then(function (session) { // This variable is purely to indicate which values are allowed (true / false). var websiteHasAuthenticatedSession = false; // Inform the session extension about the current session state of the website. session.configure({ active: websiteHasAuthenticatedSession, endpoints: { loginUrl: '/login', loginRedirectUrl: '/profile', logoutUrl: '/logout' } }); }); } });

Als de aanmeldstatus op de gastwebsite moet wijzigen, moet de logout-methode worden opgeroepen zodat de nodige flows gestart worden om correct af te melden.

De endpoints overschrijven

De standaard login/logout-endpoints kunnen altijd overschreven worden door een eigenschap toe te voegen aan het object in de configure-methode. Het codevoorbeeld hieronder toont hoe de endpoints te overschrijven en een lokale ontwikkeling mogelijk te maken. Een concreet voorbeeld is het hergebruik van de header voor verschillende loketfuncties. De endpoints mogen ook een relatief pad gebruiken t.o.v. de documentroot.

// Capture any widget that is present or will be present on the webpage. vl.widget.client.capture(function (widget) { // Only process the widget if widget is a global header. if (widget.getPluginTypeId() === 'global_header') { // Get the Citizen Profile Session extension from the global header widget. widget.getExtension('citizen_profile.session').then(function (session) { // This variable is purely to indicate which values are allowed (true / false). var websiteHasAuthenticatedSession = false; // Inform the session extension about the current session state of the website. Keep in mind // this operation can only be performed once on every page load. session.configure({ active: websiteHasAuthenticatedSession, endpoints: { loginUrl: '/login', loginRedirectUrl: '/profile', logoutUrl: '/logout' } }); }); } });
De sessie verlengen op basis van activiteit

De gastwebsite informeert ook over activiteit en kan op basis daarvan de eigen sessie verlengen. Dit is alleen van toepassing als de gastwebsite zelf de maximumduur van een sessie beperkt.

De aanvragen voor applicatie-logout afhandelen via JavaScript

Aanmelden

Om de Mijn Burgerprofiel-extensie een login te laten uitvoeren voor een website, moet de login-URL, die de aanmeldflow kan starten, beschikbaar zijn. De modal met aanmeldopties is de start van die aanmeldflow.

Zo lang de gebruiker niet is aangemeld, blijft het beletselteken rechts bovenaan actief.

Zodra de gebruiker is aangemeld, moet de callback-pagina van de gastwebsite een bericht verzenden met daarin de status van het aanmelden: gelukt of mislukt.

Aanmelden succesvol afgehandeld

Als de website een succesvolle aanmeldflow doorloopt, redirect de Burgerprofiel-extensie automatisch naar de geconfigureerde LoginRedirectUrl, zoals meegegeven bij het rapporteren over de status van de websitesessie:

De loginRedirectUrl verwijst naar de landingspagina waar standaard aangemelde gebruikers op moeten terechtkomen. In veel gevallen is dat de startpagina of bijv. /profile, /login, /...

Voor meer informatie over rapporteren van de website sessiestatus, zie Technische documentatie Widget-platform | Activiteit tracken voor websites met ACM ondersteuning

Aanmelden mislukt

Als de aanmeldflow een fout genereert, geef dan in de onderstaande code een foutboodschap mee.

Afmelden

Om de Mijn Burgerprofiel-extensie een afmelding te laten uitvoeren voor een website, moet de logout-URL, die de logout-flow kan starten, beschikbaar zijn. Wanneer een gebruiker op Afmelden klikt, gebeurt er automatisch een redirect naar de logout-URL, zoals geconfigureerd bij de endpoints.

Fallback door featuredetectie

De login- en logout-URL's van de Mijn Burgerprofiel-extensie zorgen dus voor het aan- en afmelden vanuit de global header door de nodige informatie op te vragen via de ACM-integratie. Maar wanneer de global header uitzonderlijk niet beschikbaar is, bijvoorbeeld omdat het Widget-platform niet actief is, is het aangeraden om de Burgerprofiel-feature detectie uit te voeren.

Het onderstaande voorbeeld toont een combinatie van de status detecteren van de Mijn Burgerprofiel-sessie met die featuredetectie.

Fallback in SSO-callbackpagina

De featuredetectie is voldoende voor de Mijn Burgerprofiel-extensie om de aanmeld- en afmeldflows te starten.

De enige uitzondering hierop is de callback-pagina die wordt opgeroepen door ACM (Toegangsbeheer). Standaard verzendt deze pagina een melding naar de Mijn Burgerprofiel-extensie om de modal te sluiten. Maar in het fallback scenario is er geen Burgerprofiel-extensie beschikbaar en zal de pagina niet opgeroepen worden vanuit de modal. Hierdoor is een extra controle nodig om een iframe te detecteren. Als er geen iframe beschikbaar is, moet de redirect manueel worden uitgevoerd; zowel bij een geslaagde als een gefaalde aanmelding.

In het onderstaande codevoorbeeld is de aanmelding geslaagd.

 

Dit is een officiële website van de Vlaamse overheid - Uitgegeven door Digitaal Vlaanderen: https://www.vlaanderen.be/digitaal-vlaanderen

DISCLAIMER: http://www.vlaanderen.be/nl/disclaimer
TOEGANKELIJKHEID: http://www.vlaanderen.be/nl/toegankelijkheid