Actions

LDAP settings/nl: Difference between revisions

From LimeSurvey Manual

(Created page with "LDAP wordt nu gebruikt bij de functie "Importeren Tokens uit LDAP query", maar mogelijk wordt in de toekomst uitgebreid met ondersteuning voor LDAP authenticatie. Er is een ni...")
No edit summary
 
(186 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages />  
<languages />  
{{Alert|title=Attentie|text=Deze functie is voor het importeren van tokens via LDAP. Als je LDAP-authentificatie nodig hebt, lees dan [[Authentication plugins#LDAP|AuthLDAP plugin]]}}
__TOC__
__TOC__


==Algemeen==
==Algemeen==


LDAP wordt nu gebruikt bij de functie "Importeren Tokens uit LDAP query", maar mogelijk wordt in de toekomst uitgebreid met ondersteuning voor LDAP authenticatie. Er is een niet ondersteunde manier om tot authenticatie met LDAP te komen. [[Workarounds: Authenticating Against LDAP Cheap and Dirty|Workarounds: Authenticating Against LDAP Cheap and Dirty]]. Om deze functie te gebruiken, moet je LDAP support in config.php inschakelen en de parameters in config-ldap.php instellen.
Om deze functie te kunnen gebruiken, moet je LDAP-support in config.php inschakelen en de parameters in config/ldap.php instellen.


<div class="simplebox"><center>'''! Attention !'''</center><br /> To be able to use LDAP you have to make sure the LDAP module is installed in your PHP. Please refer to the [http://de.php.net/manual/en/ldap.installation.php PHP LDAP module documentation] how to install this extension.</div>
{{Alert|Om LDAP te kunnen gebruiken, moet de  LDAP-module in PHP geïnstalleerd zijn. [http://de.php.net/manual/en/ldap.installation.php Extensie installeren].}}


'''Hint''': If you want administration users to authenticate against LDAP then check out the information on authentication in the [[Optional settings]] page.
==Inschakelen LDAP==
*'''$enableLdap:''' als je LDAP wilt gebruiken, dan moet je deze parameter in config.php op "true" zetten (standaard: "false"):


== Enabling LDAP in config.php==
<pre>'config'=>array(
*'''$enableLdap:''' if you want to use LDAP functions in LimeSurvey, you must set this parameter to true (it is set to false by default)
'debug'=>0,
'debugsql'=>0,
'enableLdap'=>true,
)</pre>


== Defining LDAP servers in config-ldap.php==
== Definiëren LDAP-servers==


First define the ldap server connections options. For each server, the following options are available:
Definieer eerst de LDAP-server connectie-opties in application/config/ldap.php. Voor elke server zijn er de volgende opties:
*'''$serverId:''' an integer that identifies this LDAP server. It is used in query definitions to bind a server to a specific query
*'''$serverId:''' een integer die de LDAP-server identificeert. Het wordt gebruikt in query definities om de server aan een specifieke query te koppelen (bind).
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'server']:''' the IP address or DNS name of the LDAP server. If you use SSL secured connections (LDAPs or LDAP+Start-TLS) this name must correspond to the server's Certificate CN (or SubjectAlternativeName)
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'server']:''' het IP-adres of DNS-naam van de  LDAP-server. Als je SSL secured connections (LDAPs of LDAP+Start-TLS) gebruikt dan moet deze naam overeenkomen met het server Certificaat CN (of SubjectAlternativeName)
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'protoversion']:''' can be 'ldapv2' or 'ldapv3' depending on the protocol supported by your server. 'ldapv3' is the preferred protocol. However, if you want to use encrypted connections, note that LDAPs is supported in 'ldapv2' mode whereas Start-TLS is the encryption method for 'ldapv3'
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'protoversion']:''' kan zijn 'ldapv2' of 'ldapv3' afhankelijk van het door je server ondersteunde protocol. Voorkeur: 'ldapv3'. Als je encrypted verbindingen wilt gebruiken, dan is LDAP ondersteunt in de 'ldapv2' mode terwijl Start-TLS de  encryptie-methode is voor 'ldapv3'
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'encrypt']:''' defines the encryption method used. 'ldaps' is supported for 'ldav2' servers, 'start-tls' for 'ldapv3' servers. The 'none' keyword is used for cleartext LDAP communications
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'encrypt']:''' definieert de gebruikte encryptie-methode. 'ldaps' wordt ondersteunt voor 'ldav2' servers, 'start-tls' voor 'ldapv3' servers. Het 'none' keyword wordt gebruikt voor cleartext LDAP-communications
** Don't forget that for 'ldaps' or 'start-tls' encryption, the webserver must be able to check the LDAP server's certificate. Thus you need to define your Certificate Authority in your openldap library (usually this is done in the /etc/openldap/ldap.conf file under linux)
** Vergeet niet dat voor 'ldaps' of 'start-tls' encryptie, de server het LDAP server certificaat moet kunnen controleren. Dus je moet de Certificate Authority in je openldap library definiëren (meestal wordt dit voor linux gedaan in het bestand /etc/openldap/ldap.conf)
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'referrals']:''' boolean parameter defining if referrals must be followed (use false for ActiveDirectory)
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'referrals']:''' boolean parameter definieert  of doorverwijzingen moeten worden gevolgd (gebruik "false" voor ActiveDirectory)
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'encoding']:''' optional parameter which gives the encoding used by the Ldap directory to store strings. You usually do not need to setup this parameter as the default assumed encoding, 'utf-8', is the standard encoding for LDAP directories. However, if you're using Active Directory and are having problems importing accentuated strings, then try to setup this parameter to the encoding used in you area (for instance 'cp850' for West Europe). You can refer to the 'Character set of the file' dropdown list in the 'Import Token from CSV file' GUI, to have the full list of supported encodings.
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'encoding']:''' optionele parameter die de gebruikte encoding aangeeft die gebruikt wordt in de LDAP-map om strings op te slaan. Dit hoef je meestal niet te doen, omdat de standaard voor encoding 'utf-8' is. Als je echter Active Directory gebruikt en je hebt problemen met het importeren van strings met accenten, probeer dan deze parameter in te stellen op de door jou gebruikte encoding (bijvoorbeeld 'cp850' voor West Europa). Je ziet een lijst met ondersteunde encodings als je kijkt in de dropdownlijst 'karakterset van het bestand' bij de functie [[Survey_participants/nl#Deelnemers uit een CSV-bestand importeren|Importeer toegangscodes uit CSV-bestand]].


Next you need to define what authentication is needed to gain access to the directory. If 'anonymous' access is allowed do NOT set the two following parameters, otherwise set them accordingly:
Daarna moet je aangeven welke authenticatie nodig is om toegang te krijgen tot de map. Als anonieme toegang is toegestaan, dan moet je de volgende twee parameters niet zetten en anders dus wel:
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'binddn']:''' DN of the 'LDAP' user that is allowed to read the directory
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'binddn']:''' DN van de LDAP-gebruiker die de map mag lezen
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'bindpw']:''' Password for the above LDAP user
*'''$ldap_server<nowiki>[</nowiki>$serverId]<nowiki>[</nowiki>'bindpw']:''' Password van de bovenstaande LDAP-gebruiker.


If you need to define other LDAP servers, add the following line to increment the serverID and define new parameters:
Als je meerdere LDAP-servers definieert, voeg dan de volgende regel toe:
*'''$serverId++;'''
*'''$serverId++'''.


== Defining queries in config-ldap.php==
== Definiëren queries in config/ldap.php==


Caution: when an '''ldap attribute name''' is required in one of these parameters, '''only use lower case names''': for instance displayname and NOT displayName.
LET OP: wanneer er een '''ldap attribuutnaam''' wordt gebruikt in een van deze parameters, '''gebruik dan alleen kleine letters''': dus displayname en NIET displayName.


Please refer to the config-ldap.php file as it contains samples configuration.
Bekijk het bestand config/ldap.php, het bevat voorbeelden van de configuratie.


=== Simple Queries===
===Eenvoudige queries===


Let's begin with simples queries. These queries only filter LDAP entries based on their own attributes and location. They are usually enough for querying ActiveDirectory.
Een eenvoudige query filtert LDAP-entries op grond van hun attributen en de plaats. Dit is normaal gesproken genoeg voor ActiveDirectory.
*'''$query_id:''' is the id of the LDAP query
*'''$query_id:''' is het ID van de LDAP-query
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId']: bind the query to a specific server
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId']:''' verbind de query met een specifieke server
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name']:''' String describing the query. It will be displayed in the GUI
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name']:''' Tekst die de query beschrijft. Het wordt in de GUI getoond
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Root DN to use for user searches
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Root DN voor zoeken gebruiker
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter used to select potential users' entries. It must be enclosed in parenthesis
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter dat gebruikt wordt om mogelijke gebruikers te selecteren. Het moet tussen haakjes staan
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' scope of the LDAP search for users ('base', 'one' or 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' scope van de LDAP zoeken naar gebruikers ('base', 'one' or 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'firstname_attr']:''' Ldap attribute that will be mapped to the Firstname field of the token entry
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'firstname_attr']:''' Ldap attribuut gekoppeld met de voornaam van de toegangscode
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'lastname_attr']:''' Ldap attribute that will be mapped to the Lastname field of the token entry
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'lastname_attr']:''' Ldap attribuut gekoppeld met de achternaam van de toegangscode
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'email_attr']:''' Ldap attribute that will be mapped to the email address field of the token entry
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'email_attr']:''' Ldap attribuut gekoppeld met het e-mailadres van de toegangscode.


Optionaly you can retrieve more information from the directory:
Optioneel kun je meer informatie ophalen uit de directory:
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'token_attr']:''' Ldap attribute that will be mapped to the token code
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'token_attr']:''' Ldap attribuut gekoppeld met de toegangscode
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'language']:''' Ldap attribute that will be mapped to the user language code
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'language']:''' Ldap attribuut gekoppeld met de taalcode van de gebruiker
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'attr1']:''' Ldap attribute that will be mapped to the attribute_1 field
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'attr1']:''' Ldap attribuut gekoppeld met het attribuut_1 veld
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'attr2']:''' Ldap attribute that will be mapped to the attribute_2 field
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'attr2']:''' Ldap attribuut gekoppeld met het attribuut_2 veld


=== Combined Group Queries with DN members===
===Gecombineerde groep queries met DN leden===


Let's now see how to define a more complicated query.
Nu gaan we een moeilijkere query maken.


The following queries uses a first LDAP search that looks into LDAP groups. An LDAP group is an LDAP entry containing references to users' entries in the form of:
De volgende queries gebruiken eerst een LDAP-zoek naar de LDAP-groepen. Een LDAP-groep is een LDAP-entry die referenties naar gebruikers bevat in de vorm van:
** user ids (for instance posixGroups do)    ==> See the next section
* user-id's van gebruikers (bijvoorbeeld posixGroups)  ==> Lees de volgende paragraaf
** Or user DNs (for instance groupofnames and groupofuniquenames do) ==> see below
* Of user-DN's (bijvoorbeeld groupofnames en groupofuniquenames) ==> zie hieronder


<u>Here we deal with groups containing user DNs:</u>
<u>We hebben hier groepen die user-DN's bevatten:</u>
*define $query_id, $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId'], $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name'] as explained above
*definieer $query_id, $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId'], $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name'] zoals hierboven uitgelegd.


Then define the group filter parameters:
Definieer dan de filter parameters van de groep:
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupbase']:''' the Root DN from which you want to start searching for group entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupbase']:''' de Root DN waarvandaan je wilt beginnen met zoeken naar groepen
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupfilter']:''' the LDAP filter that will select potential group entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupfilter']:''' het LDAP-filter die de mogelijke groepen zal selecteren
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupscope']:''' the scope of the LDAP search for groups ('on', 'base' or 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupscope']:''' de scope van het LDAP-zoeken naar groepen ('on', 'base' of 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupmemberattr']:''' name of the LDAP attribute in the group entry that will contain references to users' entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupmemberattr']:''' naam van het LDAP-attribuut in de groep dat referenties naar gebruikers zal bevatten
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''groupmemberisdn'''']:''' '''TRUE'''
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''groupmemberisdn'''']:''' '''TRUE'''


At this point everything is setup to let the fist LDAP search find users corresponding to selected groups. However, you can restrict which of these 'user candidates' will be selected by applying another filter on them. This is, of course, optionnal:
Nu is alles ingesteld om de eerste LDAP-zoekopdracht naar gebruikers behorend tot geselecteerde groepen te doen. Je kunt echter nog wel beperken welke van de gevonden gebruikers geselecteerd zal worden, door nog een filter te gebruiken. Dit is natuurlijk optioneel:
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Base DN for the user LDAP search (only user candidate matching this base) will be selected
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Base DN voor het LDAP-zoeken naar gebruikers (alleen gevonden gebruikers behorend bij deze base selecteren)
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' Scope for the user LDAP search (only user candidate matching the userbase+scope) will be selected
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' Scope voor het zoeken (alleen gevonden gebruikers met deze userbase+scope selecteren)
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter to apply to each user candidate entry (on its attributes) to add another selection
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter op elke gevonden gebruiker te gebruiken (op de attributen van die gebruiker) om een andere selectie toe te voegen.


=== Combined Group Queries with UID members===
===Gecombineerde groep queries met UID leden===


Let's now see how to define a combined Group query when group members are user UIDs and not User DNs.
We laten nu zien hoe je een gecombineerde groep query met groepsleden kunt maken, de leden zijn user UIDs en niet  User DNs.


As for the Group queries with DNs members, these queries uses a first LDAP search that looks for LDAP groups entries and get their members. These members values are then used in a user search filter to search for corresponding entries. Thus another parameter must be configured to define the user attribute in the user's entry that should match the member UID found in the groups.
Net als bij groep queries met DNs leden, gebruiken deze queries een eerste LDAP-zoek naar LDAP-groepen en haalt de leden op. Deze leden worden dan gefilterd. Er moet een parameter worden ingesteld om het gebruikersattribuut te definiëren dat overeen moet komen met het UID van het lid/member gevonden in de groepen.


<u>Let's review the required parameters:</u>
<u>We bekijken de verplichte parameters:</u>
*define $query_id, $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId'], $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name'] as explained above
*defineer $query_id, $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'ldapServerId'], $ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'name'] zoals hierboven uitgelegd


Then define the group filter parameters:
Definieer dan de groep filter parameters:
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupbase']:''' the Root DN from which you want to start searching for group entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupbase']:''' de root DN waar vandaan je met zoeken naar groep entries wilt beginnen
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupfilter']:''' the LDAP filter that will select potential group entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupfilter']:''' het LDAP-filter om de mogelijke groep entries te selecteren
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupscope']:''' the scope of the LDAP search for groups ('on', 'base' or 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupscope']:''' de scope van het zoeken naar groepen ('on', 'base' of 'sub')
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupmemberattr']:''' name of the LDAP attribute in the group entry that will contain references to users' entries
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'groupmemberattr']:''' naam van het LDAP-attribuut in de groep entry die de referenties naar de gebruikers bevat
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''groupmemberisdn'''']:''' '''FALSE'''
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''groupmemberisdn'''']:''' '''FALSE'''
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''useridattr'''']:''' name of the user attribute that must match the UID found in the group members
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>''''useridattr'''']:''' naam van het attribuut van de gebruiker dat moet overeenkomen met het UID in de groepsleden


At this point everything is setup to let the fist LDAP search find users UIDs corresponding to selected groups and a user search filter will be automatically filled.
Nu is alles ingesteld om de eerste LDAP-zoekopdracht naar gebruikers behorend tot de geselecteerde groepen te doen, met een automatisch gevuld filter op gebruiker.


However, you can restrict which of these 'user candidates' will be selected by completing the automatic user filter computed from member UIDs. This is, of course, optional:
Je kunt echter nog wel beperken welke van de gevonden gebruikers geselecteerd zal worden, door het automatische filter nog aan te vullen. Dit is natuurlijk optioneel:  
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Base DN for the user LDAP search (only user candidate matching this base) will be selected
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userbase']:''' Base DN van het LDAP zoeken  (alleen gebruikers behorend bij deze base selecteren)
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' Scope for the user LDAP search (only user candidate matching the userbase+scope) will be selected
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userscope']:''' Scope voor het zoeken (alleen gebruikers met deze userbase+scope selecteren)
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter to apply to each user candidate entry (on its attributes) to add another selection
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' filter op elke gevonden gebruiker te gebruiken (op de attributen van die gebruiker) om een andere selectie toe te voegen.


=== What about Active Directory?===
===En hoe zit het met Active Directory?===


Active Directory (AD) is a Microsoft registry that can be queried by using the LDAP protocol.
Active Directory (AD) is een Microsoft registry die gelezen kan worden met het LDAP-protocol.


It is then possible to use its content for LimeSurvey token queries, but this requires knowledge on how AD is organized.
Het is dan mogelijk om de inhoud te gebruiken voor LimeSurvey token queries, maar dat vereist kennis over hoe Active Directory is georganiseerd.  
* The LDAP root base is dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
* De LDAP root base is dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1


==> For instance if your company owns the DNS domain 'my-company.com', and your Windows domain is 'employees', then your root base is dc=employees,dc=my-company,dc=com
==> Voorbeeld: als je bedrijf een DNS domein 'my-company.com' heeft en je Windows domein is 'employees', dan is je root base dc=employees,dc=my-company,dc=com
* Users and users-groups are stored below the cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 (please note this is not ou=users)
* Gebruikers en gebruikersgroepen worden opgeslagen onder  cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 (dit is dus niet ou=users)
* Active Directory Groups
* Active Directory groepen
** Groups objects contain DN of members in their 'member' attribute.
** Groepsobjecten bevatten DN of leden in hun 'member' attribuut.
** Group memberships are also stored in the memberOf attribute of each user entry. This attribute contains DNs of groups the user belongs to
** Groepslidmaatschap wordt ook opgeslagen in het memberOf attribuut per gebruiker. Dit attribuut bevat DNs van groepen waartoe een gebruiker behoort
** some groups are in CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
** Enkele groepen staan in CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
*** For instance: cn=Administrator,CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
*** Voorbeeld: cn=Administrator,CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1


In some cases it is not as easy to query an active directory so here is a sample configuration for getting some infomations of an active directory:
Het is soms lastig om een  query te gebruiken op een active directory. Hier een mogelijke configuratie voor het verkrijgen van informatie uit een active directory:


<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php">
//Connection to the active directory Server:
//Verbinden met de active directory Server:
$serverId=0;
$serverId=0;
$ldap_server[$serverId]['server'] = "10.10.10.10";
$ldap_server[$serverId]['server'] = "10.10.10.10";
$ldap_server[$serverId]['port'] = "389";
$ldap_server[$serverId]['port'] = "389";
$ldap_server[$serverId]['protoversion'] = "ldapv2";
$ldap_server[$serverId]['protoversion'] = "ldapv2";
$ldap_server[$serverId]['encrypt'] = "none"; // Most AD LDAP servers will not have encryption set by default
$ldap_server[$serverId]['encrypt'] = "none"; // Meestal staat encryptie niet standaard aan bij Active Direcory LDAP servers
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['binddn'] = "domain\\user";
$ldap_server[$serverId]['binddn'] = "domain\\user";
$ldap_server[$serverId]['bindpw'] = "userpassword";
$ldap_server[$serverId]['bindpw'] = "userpassword";
//$ldap_server[$serverId]['binddn'] = "CN=user,OU=user_group,DC=xxx,DC=yyy"; this one will not work with active directory, that&acute;s why you need to use "domain\\user"
//$ldap_server[$serverId]['binddn'] = "CN=user,OU=user_group,DC=xxx,DC=yyy"; deze gebruikt active directory niet, daarom hoef je hier geen "domain\\user" te gebruiken
//Here is a sample query for getting all active users of an active directory:
//voorbeeld query voor ophalen alle actieve gebruikers in een active directory:
$query_id=0;
$query_id=0;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'Staff with an enabled account';
$ldap_queries[$query_id]['name'] = 'Staf met ingeschakeld account';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(!(userAccountControl=514)))';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(!(userAccountControl=514)))';
//(!(userAccountControl=514)) you are not able to ask active directory for an active user but you are able to ask for a non inactive user
//(!(userAccountControl=514)) je kunt niet een active directory vragen om een actieve gebruiker, maar wel om een niet inactieve gebruiker
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'givenname';
$ldap_queries[$query_id]['firstname_attr'] = 'voornaam';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Leave empty for Auto Token generation bu phpsv
$ldap_queries[$query_id]['token_attr'] = ''; // Leeg laten voor generatie toegangscode door phpsv
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ldap_queries[$query_id]['attr2'] = '';
$ldap_queries[$query_id]['attr2'] = '';
//Group filtering was not possible in active directory, you need to add the memberOf attribute of an user. Here is a sample query for getting all active users that are member of the group "samplegroup" in active directory:
//Groepsfiltering was niet mogelijk in active directory, je moet een memberOf attribuut van een gebruiker toevoegen. Voorbeeld query voor het ophalen van alle actieve gebruikers die lid zijn van de "samplegroup" in active directory:
$query_id++;
$query_id++;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'All members of samplegroup';
$ldap_queries[$query_id]['name'] = 'Alle leden van de samplegroup';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(memberOf=CN=samplegroup,OU=Group Global,OU=USER_GROUP,DC=xxx,DC=yyy)(!(userAccountControl=514)))';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(memberOf=CN=samplegroup,OU=Group Global,OU=USER_GROUP,DC=xxx,DC=yyy)(!(userAccountControl=514)))';
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'givenname';
$ldap_queries[$query_id]['firstname_attr'] = 'voornaam';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Leave empty for Auto Token generation bu phpsv
$ldap_queries[$query_id]['token_attr'] = ''; // Leeg laten voor generatie toegangscode door phpsv
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ldap_queries[$query_id]['attr1'] = '';
Line 162: Line 169:
</syntaxhighlight>
</syntaxhighlight>


Another example User query:
Voorbeeld gebruiker query:
<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php">
$ldap_queries<nowiki>[</nowiki>$query_id]]<nowiki>[</nowiki>'userfilter']] = '(&('''objectCategory=Person''')(objectClass='''user''')(!('''userAccountControl=514''')))'; // AD doesn't recognise enabled accounts in the normal way, so instead, we check users are not disabled
$ldap_queries[$query_id]['userfilter'] = '(&('''objectCategory=Person''')(objectClass='''user''')(!('''userAccountControl=514''')))'; // Active directory herkent niet ingeschakelde accounts, we controleren daarom op niet uitgeschakelde gebruikers
</syntaxhighlight>
</syntaxhighlight>
* As suggested in the config file, consider adding (!(email=*)) to your user filters to ignore users with no email address.
* Overweeg, om zoals voorgesteld in het config bestand, om (!(email=*)) toe te voegen aan je gebruikersfilters om gebruikers zonder e-mailadres over te slaan.


Example group query:
Voorbeeld groepsquery:


<syntaxhighlight lang="php" enclose="div">
<syntaxhighlight lang="php">
$ldap_queries<nowiki>[</nowiki>$query_id]]<nowiki>[</nowiki>'groupfilter']] = '(&(objectClass='''group''')(cn=Domain Admins))'; // AD doesn't use the standard attribute name for groups, so use this example instead.
$ldap_queries[$query_id]['groupfilter'] = '(&(objectClass='''group''')(cn=Domain Admins))'; // Active directory gebruikt niet het standaard attribuutnaam voor groepen, dus gebruik daarom dit voorbeeld.
</syntaxhighlight>
</syntaxhighlight>


Find more information about the Active Directory LDAP structure on [http://www.informit.com/articles/article.aspx?p=101405&seqNum;=7 this page].
Informatie over de Active Directory LDAP-structuur op [https://technet.microsoft.com/en-us/library/bb727030.aspx Active Directory Architecture] en [https://msdn.microsoft.com/en-us/library/cc223122.aspx Active Directory Technical Specification].
 
==Working configurations==
 
===MS AD 2003===
 
Apache vhost code:
 
<syntaxhighlight lang="php" enclose="div"><Location /admin>
 AuthBasicProvider ldap
 AuthType Basic
 AuthzLDAPAuthoritative off
 AuthName "Rechner Login verwenden"
 AuthLDAPURL "ldap://ldaphost.domain.tld:389/DC=domain,DC=tld?sAMAccountName?sub?(objectClass=*)" [<div class="simplebox">] NONE
 AuthLDAPBindDN "DOMAIN\\ldapuser"
 AuthLDAPBindPassword "ldappass"
 require valid-user
</Location></syntaxhighlight>
 
LimeSurvey config.php code:
 
<syntaxhighlight lang="php" enclose="div">$useWebserverAuth = true;
$userArrayMap = Array ('Administrator' => 'admin');
$WebserverAuth_autocreateUser = true;
function hook_get_autouserprofile($user_name) {
       $SearchFor=$user_name;
       $SearchField="samaccountname";
       $LDAPHost = "ldaphost.domain.tld";
       $dn = "OU=Benutzer,OU=Company,DC=domain,DC=tld";
       $LDAPUserDomain = "@domain.tld";
       $LDAPUser = "ldapuser";
       $LDAPUserPassword = "ldappass";
       $LDAPFieldsToFind = array("cn", "samaccountname", "mail");
       $cnx = ldap_connect($LDAPHost) or die("Could not connect to LDAP");
       ldap_set_option($cnx, LDAP_OPT_PROTOCOL_VERSION, 3);
       ldap_set_option($cnx, LDAP_OPT_REFERRALS, 0);
       ldap_bind($cnx,$LDAPUser.$LDAPUserDomain,$LDAPUserPassword) or die("Could not bind to LDAP");
       error_reporting (E_ALL </div> E_NOTICE);
       $filter="($SearchField=$SearchFor*)";
       $sr=ldap_search($cnx, $dn, $filter, $LDAPFieldsToFind);
       $info = ldap_get_entries($cnx, $sr);
       for ($x=0; $x<$info["count"]; $x++) {
               $sam=$info[$x]['samaccountname'][0];
               $email=$info[$x]['mail'][0];
               $nam=$info[$x]['cn'][0];
               if (stristr($sam, "$SearchFor")) {
                       $user_name_from_backend = $nam;
                       $user_email_from_backend = $email;
               }
       }
       if ($x==0) {
               return Array();
       }
       return Array(
               'full_name' => "$user_name_from_backend",
               'email' => "$user_email_from_backend",
               'lang' => "de",
               'htmleditormode' => 'inline',
               'templatelist' => 'default',
               'create_survey' => 1,
               'create_user' => 0,
               'delete_user' => 0,
               'superadmin' => 0,
               'configurator' =>0,
               'manage_template' => 0,
               'manage_label' => 0);
}</syntaxhighlight>
 
Forum link (German): http://www.limesurvey.org/forum/german-forum/75992-ldap-auth-und-auto-benutzer-anlegen?lang=en#75992

Latest revision as of 21:48, 17 February 2022

  Attentie : Deze functie is voor het importeren van tokens via LDAP. Als je LDAP-authentificatie nodig hebt, lees dan AuthLDAP plugin


Algemeen

Om deze functie te kunnen gebruiken, moet je LDAP-support in config.php inschakelen en de parameters in config/ldap.php instellen.

  Om LDAP te kunnen gebruiken, moet de LDAP-module in PHP geïnstalleerd zijn. Extensie installeren.


Inschakelen LDAP

  • $enableLdap: als je LDAP wilt gebruiken, dan moet je deze parameter in config.php op "true" zetten (standaard: "false"):
'config'=>array(
		'debug'=>0,
		'debugsql'=>0,
		'enableLdap'=>true,
	)

Definiëren LDAP-servers

Definieer eerst de LDAP-server connectie-opties in application/config/ldap.php. Voor elke server zijn er de volgende opties:

  • $serverId: een integer die de LDAP-server identificeert. Het wordt gebruikt in query definities om de server aan een specifieke query te koppelen (bind).
  • $ldap_server[$serverId]['server']: het IP-adres of DNS-naam van de LDAP-server. Als je SSL secured connections (LDAPs of LDAP+Start-TLS) gebruikt dan moet deze naam overeenkomen met het server Certificaat CN (of SubjectAlternativeName)
  • $ldap_server[$serverId]['protoversion']: kan zijn 'ldapv2' of 'ldapv3' afhankelijk van het door je server ondersteunde protocol. Voorkeur: 'ldapv3'. Als je encrypted verbindingen wilt gebruiken, dan is LDAP ondersteunt in de 'ldapv2' mode terwijl Start-TLS de encryptie-methode is voor 'ldapv3'
  • $ldap_server[$serverId]['encrypt']: definieert de gebruikte encryptie-methode. 'ldaps' wordt ondersteunt voor 'ldav2' servers, 'start-tls' voor 'ldapv3' servers. Het 'none' keyword wordt gebruikt voor cleartext LDAP-communications
    • Vergeet niet dat voor 'ldaps' of 'start-tls' encryptie, de server het LDAP server certificaat moet kunnen controleren. Dus je moet de Certificate Authority in je openldap library definiëren (meestal wordt dit voor linux gedaan in het bestand /etc/openldap/ldap.conf)
  • $ldap_server[$serverId]['referrals']: boolean parameter definieert of doorverwijzingen moeten worden gevolgd (gebruik "false" voor ActiveDirectory)
  • $ldap_server[$serverId]['encoding']: optionele parameter die de gebruikte encoding aangeeft die gebruikt wordt in de LDAP-map om strings op te slaan. Dit hoef je meestal niet te doen, omdat de standaard voor encoding 'utf-8' is. Als je echter Active Directory gebruikt en je hebt problemen met het importeren van strings met accenten, probeer dan deze parameter in te stellen op de door jou gebruikte encoding (bijvoorbeeld 'cp850' voor West Europa). Je ziet een lijst met ondersteunde encodings als je kijkt in de dropdownlijst 'karakterset van het bestand' bij de functie Importeer toegangscodes uit CSV-bestand.

Daarna moet je aangeven welke authenticatie nodig is om toegang te krijgen tot de map. Als anonieme toegang is toegestaan, dan moet je de volgende twee parameters niet zetten en anders dus wel:

  • $ldap_server[$serverId]['binddn']: DN van de LDAP-gebruiker die de map mag lezen
  • $ldap_server[$serverId]['bindpw']: Password van de bovenstaande LDAP-gebruiker.

Als je meerdere LDAP-servers definieert, voeg dan de volgende regel toe:

  • $serverId++.

Definiëren queries in config/ldap.php

LET OP: wanneer er een ldap attribuutnaam wordt gebruikt in een van deze parameters, gebruik dan alleen kleine letters: dus displayname en NIET displayName.

Bekijk het bestand config/ldap.php, het bevat voorbeelden van de configuratie.

Eenvoudige queries

Een eenvoudige query filtert LDAP-entries op grond van hun attributen en de plaats. Dit is normaal gesproken genoeg voor ActiveDirectory.

  • $query_id: is het ID van de LDAP-query
  • $ldap_queries[$query_id]['ldapServerId']: verbind de query met een specifieke server
  • $ldap_queries[$query_id]['name']: Tekst die de query beschrijft. Het wordt in de GUI getoond
  • $ldap_queries[$query_id]['userbase']: Root DN voor zoeken gebruiker
  • $ldap_queries[$query_id]['userfilter']: filter dat gebruikt wordt om mogelijke gebruikers te selecteren. Het moet tussen haakjes staan
  • $ldap_queries[$query_id]['userscope']: scope van de LDAP zoeken naar gebruikers ('base', 'one' or 'sub')
  • $ldap_queries[$query_id]['firstname_attr']: Ldap attribuut gekoppeld met de voornaam van de toegangscode
  • $ldap_queries[$query_id]['lastname_attr']: Ldap attribuut gekoppeld met de achternaam van de toegangscode
  • $ldap_queries[$query_id]['email_attr']: Ldap attribuut gekoppeld met het e-mailadres van de toegangscode.

Optioneel kun je meer informatie ophalen uit de directory:

  • $ldap_queries[$query_id]['token_attr']: Ldap attribuut gekoppeld met de toegangscode
  • $ldap_queries[$query_id]['language']: Ldap attribuut gekoppeld met de taalcode van de gebruiker
  • $ldap_queries[$query_id]['attr1']: Ldap attribuut gekoppeld met het attribuut_1 veld
  • $ldap_queries[$query_id]['attr2']: Ldap attribuut gekoppeld met het attribuut_2 veld

Gecombineerde groep queries met DN leden

Nu gaan we een moeilijkere query maken.

De volgende queries gebruiken eerst een LDAP-zoek naar de LDAP-groepen. Een LDAP-groep is een LDAP-entry die referenties naar gebruikers bevat in de vorm van:

  • user-id's van gebruikers (bijvoorbeeld posixGroups)  ==> Lees de volgende paragraaf
  • Of user-DN's (bijvoorbeeld groupofnames en groupofuniquenames) ==> zie hieronder

We hebben hier groepen die user-DN's bevatten:

  • definieer $query_id, $ldap_queries[$query_id]['ldapServerId'], $ldap_queries[$query_id]['name'] zoals hierboven uitgelegd.

Definieer dan de filter parameters van de groep:

  • $ldap_queries[$query_id]['groupbase']: de Root DN waarvandaan je wilt beginnen met zoeken naar groepen
  • $ldap_queries[$query_id]['groupfilter']: het LDAP-filter die de mogelijke groepen zal selecteren
  • $ldap_queries[$query_id]['groupscope']: de scope van het LDAP-zoeken naar groepen ('on', 'base' of 'sub')
  • $ldap_queries[$query_id]['groupmemberattr']: naam van het LDAP-attribuut in de groep dat referenties naar gebruikers zal bevatten
  • $ldap_queries[$query_id]['groupmemberisdn']: TRUE

Nu is alles ingesteld om de eerste LDAP-zoekopdracht naar gebruikers behorend tot geselecteerde groepen te doen. Je kunt echter nog wel beperken welke van de gevonden gebruikers geselecteerd zal worden, door nog een filter te gebruiken. Dit is natuurlijk optioneel:

  • $ldap_queries[$query_id]['userbase']: Base DN voor het LDAP-zoeken naar gebruikers (alleen gevonden gebruikers behorend bij deze base selecteren)
  • $ldap_queries[$query_id]['userscope']: Scope voor het zoeken (alleen gevonden gebruikers met deze userbase+scope selecteren)
  • $ldap_queries[$query_id]['userfilter']: filter op elke gevonden gebruiker te gebruiken (op de attributen van die gebruiker) om een andere selectie toe te voegen.

Gecombineerde groep queries met UID leden

We laten nu zien hoe je een gecombineerde groep query met groepsleden kunt maken, de leden zijn user UIDs en niet User DNs.

Net als bij groep queries met DNs leden, gebruiken deze queries een eerste LDAP-zoek naar LDAP-groepen en haalt de leden op. Deze leden worden dan gefilterd. Er moet een parameter worden ingesteld om het gebruikersattribuut te definiëren dat overeen moet komen met het UID van het lid/member gevonden in de groepen.

We bekijken de verplichte parameters:

  • defineer $query_id, $ldap_queries[$query_id]['ldapServerId'], $ldap_queries[$query_id]['name'] zoals hierboven uitgelegd

Definieer dan de groep filter parameters:

  • $ldap_queries[$query_id]['groupbase']: de root DN waar vandaan je met zoeken naar groep entries wilt beginnen
  • $ldap_queries[$query_id]['groupfilter']: het LDAP-filter om de mogelijke groep entries te selecteren
  • $ldap_queries[$query_id]['groupscope']: de scope van het zoeken naar groepen ('on', 'base' of 'sub')
  • $ldap_queries[$query_id]['groupmemberattr']: naam van het LDAP-attribuut in de groep entry die de referenties naar de gebruikers bevat
  • $ldap_queries[$query_id]['groupmemberisdn']: FALSE
  • $ldap_queries[$query_id]['useridattr']: naam van het attribuut van de gebruiker dat moet overeenkomen met het UID in de groepsleden

Nu is alles ingesteld om de eerste LDAP-zoekopdracht naar gebruikers behorend tot de geselecteerde groepen te doen, met een automatisch gevuld filter op gebruiker.

Je kunt echter nog wel beperken welke van de gevonden gebruikers geselecteerd zal worden, door het automatische filter nog aan te vullen. Dit is natuurlijk optioneel:

  • $ldap_queries[$query_id]['userbase']: Base DN van het LDAP zoeken (alleen gebruikers behorend bij deze base selecteren)
  • $ldap_queries[$query_id]['userscope']: Scope voor het zoeken (alleen gebruikers met deze userbase+scope selecteren)
  • $ldap_queries[$query_id]['userfilter']: filter op elke gevonden gebruiker te gebruiken (op de attributen van die gebruiker) om een andere selectie toe te voegen.

En hoe zit het met Active Directory?

Active Directory (AD) is een Microsoft registry die gelezen kan worden met het LDAP-protocol.

Het is dan mogelijk om de inhoud te gebruiken voor LimeSurvey token queries, maar dat vereist kennis over hoe Active Directory is georganiseerd.

  • De LDAP root base is dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1

==> Voorbeeld: als je bedrijf een DNS domein 'my-company.com' heeft en je Windows domein is 'employees', dan is je root base dc=employees,dc=my-company,dc=com

  • Gebruikers en gebruikersgroepen worden opgeslagen onder cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 (dit is dus niet ou=users)
  • Active Directory groepen
    • Groepsobjecten bevatten DN of leden in hun 'member' attribuut.
    • Groepslidmaatschap wordt ook opgeslagen in het memberOf attribuut per gebruiker. Dit attribuut bevat DNs van groepen waartoe een gebruiker behoort
    • Enkele groepen staan in CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
      • Voorbeeld: cn=Administrator,CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1

Het is soms lastig om een query te gebruiken op een active directory. Hier een mogelijke configuratie voor het verkrijgen van informatie uit een active directory:

//Verbinden met de active directory Server:
$serverId=0;
$ldap_server[$serverId]['server'] = "10.10.10.10";
$ldap_server[$serverId]['port'] = "389";
$ldap_server[$serverId]['protoversion'] = "ldapv2";
$ldap_server[$serverId]['encrypt'] = "none"; // Meestal staat encryptie niet standaard aan bij Active Direcory LDAP servers
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['binddn'] = "domain\\user";
$ldap_server[$serverId]['bindpw'] = "userpassword";
//$ldap_server[$serverId]['binddn'] = "CN=user,OU=user_group,DC=xxx,DC=yyy"; deze gebruikt active directory niet, daarom hoef je hier geen "domain\\user" te gebruiken 
//voorbeeld query voor ophalen alle actieve gebruikers in een active directory:
$query_id=0;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'Staf met ingeschakeld account';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(!(userAccountControl=514)))';
//(!(userAccountControl=514)) je kunt niet een active directory vragen om een actieve gebruiker, maar wel om een niet inactieve gebruiker
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'voornaam';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Leeg laten voor generatie toegangscode door phpsv
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ldap_queries[$query_id]['attr2'] = '';
//Groepsfiltering was niet mogelijk in active directory, je moet een memberOf attribuut van een gebruiker toevoegen. Voorbeeld query voor het ophalen van alle actieve gebruikers die lid zijn van de "samplegroup" in active directory:
$query_id++;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'Alle leden van de samplegroup';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(memberOf=CN=samplegroup,OU=Group Global,OU=USER_GROUP,DC=xxx,DC=yyy)(!(userAccountControl=514)))';
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'voornaam';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Leeg laten voor generatie toegangscode door phpsv
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ldap_queries[$query_id]['attr2'] = '';

Voorbeeld gebruiker query:

$ldap_queries[$query_id]['userfilter'] = '(&('''objectCategory=Person''')(objectClass='''user''')(!('''userAccountControl=514''')))'; // Active directory herkent niet ingeschakelde accounts, we controleren daarom op niet uitgeschakelde gebruikers
  • Overweeg, om zoals voorgesteld in het config bestand, om (!(email=*)) toe te voegen aan je gebruikersfilters om gebruikers zonder e-mailadres over te slaan.

Voorbeeld groepsquery:

$ldap_queries[$query_id]['groupfilter'] = '(&(objectClass='''group''')(cn=Domain Admins))'; // Active directory gebruikt niet het standaard attribuutnaam voor groepen, dus gebruik daarom dit voorbeeld.

Informatie over de Active Directory LDAP-structuur op Active Directory Architecture en Active Directory Technical Specification.