LDAP authenticatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

Als Lead PHP developer bijdragen aan het onderwijs

Functie Als Lead PHP developer zet je samen met het team en de andere lead developers de technische lijnen uit als het gaat om het ontwikkelen van de applicaties en bepaal je samen met de PO waar elke sprint aan gewerkt zal worden. Je kunt op basis van een user story een goede aanpak formuleren en een planning opstellen, en andere hierin meenemen. Wanneer je team code schrijft verwacht je degelijke oplossingen, bij voorkeur gebruik makend van Domain Driven Design. Je ziet toegevoegde waarde in het beoordelen van het werk van collega’s om zo samen te streven naar hoge kwaliteit

Bekijk vacature »

C# Ontwikkelaar

Functieomschrijving Voor een software ontwikkelaar in de omgeving van Vught zijn we op zoek naar een gemotiveerde C# ontwikkelaar. Deel jij hun passie voor development en dan vooral in C#.NET? Dan kan dit wel eens jouw droombaan zijn! Jouw werkzaamheden zullen er ongeveer als volgt uit gaan zien Door de wensen van de klant goed te begrijpen ga jij aan de slag dit om te zetten naar passende oplossingen en werk je deze uit tot een sterk eindproduct. Je gaat je bezighouden met de ontwikkeling van webapplicaties en websites, dit doe je door middel van ASP.NET, MVC Frameworks en C#.

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

Junior Developer Low-code

Dit ga je doen Low-code ontwikkeling van software voor landelijk bekende organisaties; Samenwerken in een team van 10 collega's; Opleveren van mooie eindproducten, middels de Agile methodiek; Direct contact met de eindklant over de gewenste oplossingen. Hier ga je werken Als startende IT-professional kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet discreet en veilig verwerkt worden. De processen die hierbij horen worden door het IT team vormgegeven.

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Fullstack JavaScript developer (ReactJS, NodeJS, T

Functie Het team bestaat momenteel uit ruim 15 collega’s, waarvan ruim de helft in het ontwikkelteam werkzaam is. Er zijn gave plannen om het platform ook te gaan toepassen op bijv. vliegvelden, maar ook internationale groei zit in het verschiet en daarom zijn ze op zoek naar versterking. Als Fullstack JavaScript developer werk je nauw samen met 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creeren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld

Bekijk vacature »

Senior/Lead Python developer

Functie Samen met je team, bestaande uit een senior, 2 mediors en één junior ontwikkelaar ga je op een Agile-gebaseerde aanpak werken aan hun software. Je hebt oog voor kwaliteit, risico’s en klantbelang. Communicatie met je collega’s en waar nodig ook met klanten speelt een belangrijke rol in het bereiken van een succesvol resultaat. Als persoon ben je slim, krijg je dingen voor elkaar en ga je resultaatgericht te werk. Binnen het development team is er veel zelfstandigheid, los van de stand-up (10:00 uur) en zo nu en dan pair-programming sessies. Technieken die zij gebruiken zijn o.a. Python, Django, MySQL,

Bekijk vacature »

Sportieve Junior C#.NET developer gezocht!

Bedrijfsomschrijving Wil jij werken aan webapplicaties bij de marktleider binnen de branche? Voor een klant in de buurt van Oosterhout ben ik op zoek naar een Fullstack .NET developer. Dit bedrijf bestaat bijna 10 jaar en is inmiddels uitgegroeid tot marktleider in Nederland en heeft tevens kantoren in meerdere landen in Europa. Dit bedrijf bouwt webapplicaties waarbij internationaal enkele honderdduizenden deelnemers, soms tegelijk, een beroep doen op de realtime data uit deze applicaties. Dit brengt erg veel technische uitdaging met zich mee. Ze ontwikkelen nieuwe applicaties maar ook bestaande applicaties worden uitgebreid en verbeterd. Hier kan jij een onderdeel van

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »
Rick van Vroenhoven

Rick van Vroenhoven

12/03/2012 13:58:12
Quote Anchor link
Hallo,

Ik ben bezig met LDAP authenticatie en het scriptje werkt. Alleen nu wil ik dat alleen een bepaalde groep toegang krijgt. Hoe los ik dit op?

Dit heb ik nu:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
session_start();
$succes = TRUE;

 
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

$naam = ("OFFICE\\");
$naam.= $_POST['gebruikersnaam'];
    if ( isset($_POST['gebruikersnaam']) && isset($_POST['wachtwoord']))
    {

        /* aanmelden via LDAP */
        $ds=ldap_connect("172.16.10.4");
        if(!$ds)
        {

            $succes = FALSE;
            $foutmelding = 'Geen verbinding met Active Directory';
        }

        
        if($succes === TRUE)
        {

            ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
            $r=ldap_bind($ds, $naam, $_POST['wachtwoord']);
            if($r)
            {

           $_SESSION['gebruiker_id'] = $row['GEBRUIKERID'];
           $_SESSION['aangemeld'] = TRUE;
           header("Location: home.php");
            }

            else
            {
          $succes = FALSE;
          $foutmelding = 'Inloggen is niet gelukt door ongeldige combinatie gebruikersnaam/wachtwoord.<br/>';
      }

      ldap_close($ds);
    }
  }

  else
  {
    $error = 'Vul zowel gebruikersnaam als wachtwoord in om in te loggen.';
  }
}

?>
 
PHP hulp

PHP hulp

30/12/2024 22:23:36
 
Rick van Vroenhoven

Rick van Vroenhoven

14/03/2012 15:55:05
Quote Anchor link
Hmm volgens mij weet niemand hoe dit moet:(
 
Reshad F

Reshad F

14/03/2012 16:35:58
Quote Anchor link
in je database aan die bepaalde groep een extra rij meegeven en daar ook op controleren lijkt mij?
 
Rick van Vroenhoven

Rick van Vroenhoven

14/03/2012 16:41:04
Quote Anchor link
Ja in mij Active Directory is een groep aangemaakt. Maar ik zou niet weten waar ik dat in mijn script moet aangeven dat alleen die mensen uit de groep erbij mogen
 
Bart B

Bart B

14/03/2012 16:46:18
Quote Anchor link
Het is niet zelf gemaakt of een oplossing voor je eigenscript, maar wat je wilt heb ik met success met http://adldap.sourceforge.net/ gedaan. Was simpel met de voorbeelden erbij.

Features:
User authentication
Group management
User management
Contact management
Exchange mailbox creation
 
Marco PHPJunky

Marco PHPJunky

14/03/2012 18:16:41
Quote Anchor link
eigenlijk is dit een vraag voor: Niels Kieviet omdat hij hier een hele reeks tutorials over geschreven heeft.

Maar ik ben er zelf ook mee bezig maar kijk anders eens hier voor de tuts,
voor alvast wat extra info en stuff.
TuTs AD

Greets
Gewijzigd op 14/03/2012 18:20:44 door Marco PHPJunky
 
Rick van Vroenhoven

Rick van Vroenhoven

15/03/2012 08:39:46
Quote Anchor link
Ik zal is gaan rondkijken alvast bedankt!
 
Marco PHPJunky

Marco PHPJunky

17/03/2012 14:12:34
Quote Anchor link
En al wat verder gekomen ?
 
Niels K

Niels K

17/03/2012 14:15:46
Quote Anchor link
Hoi Rick,

Dit topic is mij ontschoten, excuses!

Kan je mij uitleggen wat je nu precies in Active Directory hebt ingesteld? Kortom, kan je de situatie beschrijven?

Niels
 
Rick van Vroenhoven

Rick van Vroenhoven

17/03/2012 15:11:45
Quote Anchor link
Hallo,

De situatie is als het volgt:

Ik ben met een simpel systeempje bezig waar ik authenticatie voor nodig heb. Ik wilde de active directory gebruiken zodat de gebruikers niet aparte wachtwoorden en gebruikersnamen nodig hebben.

Het script wat ik geplaatst heb werk perfect met de gebruikersnamen en wachtwoorden uit de Active Directory. Het enige probleem is dat het script nu iedereen doorlaat die in de active directory bekend is. Ik wil dat alleen specifieke groep uit de active directory rechten heeft binnen het systeem. Maar ik heb helaas geen idee waaar ik dit moet aangeven binnen het script.
 
 - Diov  -

- Diov -

17/03/2012 15:52:14
Quote Anchor link
Op elke pagina kijk je of er een sessie is, zonee ga je naar de login.
Zowel blijf je op de pagina?
 
Rick van Vroenhoven

Rick van Vroenhoven

17/03/2012 16:56:30
Quote Anchor link
Dem Ian op 17/03/2012 15:52:14:
Op elke pagina kijk je of er een sessie is, zonee ga je naar de login.
Zowel blijf je op de pagina?


Ja een sessie starten op iedere pagina moet zowiezo. Maar je zult in het login script toch moeten aangeven welke groep wel rechten heeft.
 
 - Diov  -

- Diov -

17/03/2012 17:26:11
Quote Anchor link
Wil je anders eens de werking van je script beschrijven?
 
Niels K

Niels K

17/03/2012 17:47:09
Quote Anchor link
Hallo Rick,

Ik snap volkomen wat je bedoeld. Voordat ik je ga uitleggen hoe het allemaal werkt even een vraag. Is het niet veel mooier als je een Single Sign On creëert? Ik heb dit zelf nog nooit gedaan, maar ik weet dat dit met het Kerberos protocol kan. Heb ik altijd al in willen duiken, maar ik heb zo weinig tijd ;-)

Terugkomend op jouw vraag, heel even de werkwijze neergezet:

1: Het authenticeren van een gebruiker.
2: Controleren of de gebruiker een de juiste groep zit.

Het authenticeren van een gebruiker:
Ik heb wat opmerkingen op de manier hoe jij een gebruiker in laat loggen.
Ik mis de (juiste) foutafhandeling van diversen onderdelen en ik mis de instelling van de versie van LDAP. Wanneer je eventueel de authenticatie over SSL wilt laten verlopen moet je gebruik maken van LDAP versie 3.

Marco heeft je reeds een link gestuurd naar de reeks met artikelen over Active Directory en PHP.
In het 5e artikel wordt uitgelegd hoe je op de juiste manier een gebruiker kunt authenticeren. In het 4e artikel wordt uitgelegd hoe je precies de versie van LDAP instelt.

Controleren of de gebruiker een de juiste groep zit:
Dit wordt een wat lastiger punt (phoe). Ik heb iets gemaakt, en ik denk het doet wat jij wil. Ik heb op dit moment niet de mogelijkheid om het (goed) te testen, dus dat moet je zelf even doen :-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['username']) && isset($_POST['password'])) {
        $dn = 'OFFICE\\';
        $connection = ldap_connect('172.16.10.4', 389);
        
        ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_set_option($connection, LDAP_OPT_REFERRALS, 0);
        
        $bind = ldap_bind($connection, $dn.$_POST['username']), $_POST['password']);
        
        $filter = 'samaccountname='.$_POST['username'];
        $search = ldap_search($connection, $dn, $filter, array('memberof', 'primarygroupid'));
        $entries = ldap_get_entries($connection, $search);
        
        if ($entries[0]['count'] > 0) {
            // Active Directory retourneert niet de primary groep.
            // Ik neem aan dat je die wilt hebben

            if (isset($entries[0]['primarygroupid'][0]) && isset($entries[0]['objectsid'][0])) {
                $userId = $entries[0]['objectsid'][0];
                $groupId = $entries[0]['primarygroupid'][0];
                $id = substr_replace($userId, pack('V', $groupId), strlen($userId)-4, 4);
                // ID is nu binair. ldap_search kan daar niet mee omgaan, dus 'even' converteren
                $hexId = bin2hex($id);
                $count = hexdec(substr($hexId, 2, 2));
                $result = hexdec(substr($hexId, 0, 2)) - hexdec(substr($hexId, 4, 12));
                
                for ($i = 0; $i < $count; $i++) {
                    // Conversie little-endian hex naar normale hex (anders kan hexdec er niet mee omgaan)
                    $conv = '';
                    for ($x = strlen(substr($hexId, 16 + ($i * 8), 8)) - 2; $x >= 0; $x = $x -2) {
                        $conv .= substr(substr($hexId, 16 + ($i * 8), 8), $x, 2);
                    }

                    // Samensmelten
                    $subs = array();
                    $subs[$i] = hexdec($conv);
                    $result .= '-'.$subs[$i];
                }

                
                // Uiteindelijke resultaat
                $result = 'S-'.$result;
                $filter = '(objectsid=)'.$result;
                $search = ldap_search($connection, $dn, $filter, array('samaccountname', 'distinguishedname'));
                $secondEntries = ldap_get_entries($connection, $search);
                
                // De bovenliggende entries vullen
                $entries[0]['memberof'][] = $secondEntries[0]['distinguishedname'][0];
            }

            else {
                $entries[0]['memberof'][] = 'CN=Domain Users,CN=Users,'.$dn;
            }
        }

        
        $userInfo = ++$entries[0]['memberof']['count'];
        
        // Groepen filteren. (Active directory zet standaard diversen pre / suffixen)
        $info[0]["memberof"];
        $groups = array();
        
        for ($i = 0; $i < $info[0]['memberof']['count']; $i++) {
            $group = $info[0]['memberof'][$i];
            if (strlen($group) > 0) {
                // Alle rotzooi eruit filteren
                $bits = explode(',', $group);
                $groups[] = substr($bits[0], 3, (strlen($bits[0]) - 3));
            }
        }

        
        if (in_array('naamvandegroep', $groups)) {
            echo 'Phoe, eindelijk ingelogd! :-)';
        }
    }
}


?>


Ik ben benieuwd of je een beetje snapt wat er allemaal gebeurd. Je moet wel zelf even de foutafhandeling toevoegen. Als ik dat allemaal had gedaan was het script wel een stukje langer :-)

De uitdaging voor mij is de groepen nog recursief in de array pompen. Ik zal eens kijken of ik dat voor elkaar krijg.

Niels
Gewijzigd op 17/03/2012 19:42:51 door Niels K
 
Rick van Vroenhoven

Rick van Vroenhoven

17/03/2012 23:21:52
Quote Anchor link
Niels bedankt voor je hulp! Ik zal het binnenkort als ik er weer mee bezig ben uittesten!
 
Niels K

Niels K

22/03/2012 14:38:06
Quote Anchor link
Is het gelukt?
 
Rick van Vroenhoven

Rick van Vroenhoven

22/03/2012 14:45:12
Quote Anchor link
Ja is inmiddels gelukt. Ik heb een collega erbij geroepen en we hebben wel een ander script samengesteld zonder fout opvanging. Maar omdat het voor een simpel systeem is is het niet zo erg.

We hebben het volgende script nu gebruikt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
session_start();
$username = $_POST['gebruikersnaam'];
$password = $_POST['wachtwoord'];

$domeinserver = "xx";
$domein = "office";
$usergroep = "CN=shared_resources,OU=Access Control Groups,DC=xxx,DC=xx,DC=xx";

$ds=ldap_connect($domeinserver);  
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$r = @ldap_bind($ds, $domein."\\".$username, $password);

if ($r) {
$sr= ldap_search($ds, $usergroep, "CN=*");
$info = ldap_get_entries($ds, $sr);

    for ($i=0; $i<$info["count"]; $i++) {
        for ($b=0; $b<count($info[0]["member"])-1; $b++) {
            $zoek = $info[0]["member"][$b];
            $nr=ldap_search($ds, $zoek, "CN=*");
            $ninfo = ldap_get_entries($ds, $nr);
            $userstring = $ninfo[0][userprincipalname][0];
            list($loginnaam, $achterstuk) = split('[@]', $userstring);
            $ingroep = ((strtolower($username) == strtolower($loginnaam)) ? 1 : 0);
            switch($ingroep){
             case
1: $_SESSION['inlognaam'] = $username;
           $_SESSION['aangemeld'] = TRUE;
           header("Location: home.php");
            }
       }
    }
}
else { echo "Uw gebruikesnaam of wachtwoord is incorrect..." ; }

ldap_close($ds);

?>


Toevoeging op 22/03/2012 14:48:54:

Maar zit ik weer met het volgende probleem :( ik vind ldap toch niet zo leuk meer.. XD Ik moet nog een lijst hebben van alle users van de AD die in een dropdown box komt. Misschien ideeen?
 
Niels K

Niels K

22/03/2012 14:51:42
Quote Anchor link
Hoi Rick,

Op deze manier kan het ook. Alleen kijkt hij op dit moment niet naar subs.

Stel je hebt de volgende mappenstructuur:

- Hoofdmap
- Submap

Nu wil je weten of je user in de groep Submap zit. Naar mijn weten controleert jouw script dat niet.

Daarnaast, moet jij een hele LDAP search string invoeren: 'CN=shared_resources,OU=Access Control Groups,DC=xxx,DC=xx,DC=xx'. Met mijn script hoef je alleen de naam in te voeren.

Maar het doet zover ik zie wel wat jij wil ;-)

Mooi dat je het hebt opgelost.

Niels
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.