Actions

LDAP settings/nl: Difference between revisions

From LimeSurvey Manual

(Created page with "Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname@example.intra''' en wachtwoord).")
No edit summary
(23 intermediate revisions by 2 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|AuthLDAP plugin]]}}  
{{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__
Line 25: Line 25:
*'''$serverId:''' een integer die de LDAP-server identificeert. Het wordt gebruikt in query definities om de server aan een specifieke query te koppelen (bind).
*'''$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']:''' 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>'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']:''' 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  encryption methode is voor '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']:''' definieert de gebruikte encryption methode. 'ldaps' wordt ondersteunt voor 'ldav2' servers, 'start-tls' voor 'ldapv3' servers. Het 'none' keyword wordt gebruikt voor 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
** Vergeet niet dat voor 'ldaps' of 'start-tls' encryption, 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)
** 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 definieert  of doorverwijzingen moeten worden gevolgd (gebruik "false" voor 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']:''' 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 dropdown lijst 'karakterset van het bestand' bij de functie [[Survey_participants/nl#Deelnemers uit een CSV-bestand importeren|Importeer toegangscodes uit CSV-bestand]]'.
*'''$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]].


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:
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:
Line 189: Line 189:
'''Instellingen werkend met Active Directory 2008 en 2.05+ (build 140520) met AuthLDAP-plugin.'''
'''Instellingen werkend met Active Directory 2008 en 2.05+ (build 140520) met AuthLDAP-plugin.'''


==== Authenticatie met LDAP met userPrincipalName-attribuut ====
==== Authenticatie met LDAP en userPrincipalName-attribuut ====


'''NB''': Authenticatie met userPrincipalName-attribuut (bijv.: firstname.lastname@example.intra). Voeg een LimeSurvey gebruiker toe met dezelfde naam als een AD(active directory) gebruikersaccount :
'''NB''': Authenticatie met userPrincipalName-attribuut (bijv.: firstname.lastname@example.intra). Voeg een LimeSurvey gebruiker toe met dezelfde naam als een AD(active directory) gebruikersaccount :


*''Username'': '''firstname.lastname@example.intra'''
*''Username'': '''firstname.lastname@example.intra'''
*Ldap server - e.g. ldap://ldap.mydomain.com: ldap://ldap.mydomain.com;
*Ldap server - bijv. ldap://ldap.mydomain.com: ldap://ldap.mydomain.com;
*Port number (default when omtopicitted is 389);
*Port number (default bij omtopicitted is 389);
*LDAP version (LDAPv2 = 2), e.g. 3: 3;
*LDAP version (LDAPv2 = 2), bijv. 3: 3;
*Username prefix cn= or uid=: cn=;
*Username prefix cn= of uid=: cn=;
*Username suffix e.g. @mydomain.com or remaining part of ldap query: ,OU=people,DC=mydomain,DC=com;
*Username suffix bijv. @mydomain.com of resterend deel van ldap-query: ,OU=people,DC=mydomain,DC=com;
*Create a LimeSurvey administrator with the same name as a AD(active directory) user account;
*Maak een LimeSurvey beheerder aan met dezelfde naam als een AD(active directory) gebruikersaccount;
*Log in using the AD credentials (username and password).
*Log in met de AD-credentials (gebruikersnaam en wachtwoord).


===Voorbeeld instellingen AD2008 en 2.05+===
===Voorbeeld instellingen AD2008 en 2.05+===
Line 211: Line 211:


*''Username'': '''firstname.lastname@exaom: ldap://ldap.mydomain.com
*''Username'': '''firstname.lastname@exaom: ldap://ldap.mydomain.com
*Port number (default when omtopicitted is 389):
*Port number (default bij omtopicitted is 389):
*LDAP version (LDAPv2 = 2), e.g. 3: 3
*LDAP version (LDAPv2 = 2), bijv. 3: 3
*Username prefix cn= or uid=: cn=
*Username prefix cn= of uid=: cn=
*Username suffix e.g. @mydomain.com or remaining part of ldap query: ,OU=people,DC=mydomain,DC=com
*Username suffix bijv. @mydomain.com of resterend deel van ldap-query: ,OU=people,DC=mydomain,DC=com
*Create a LimeSurvey administrator with the same name as a AD(active directory) user account.
*Maak een LimeSurvey beheerder aan met dezelfde naam als een AD(active directory) gebruikersaccount;
*Log in using the AD credentials(username and password).
*Log in met de AD-credentials (gebruikersnaam en wachtwoord).


=== Voorbeeld instellingen AD2008 en 2.05+ ===
=== Voorbeeld instellingen AD2008 en 2.05+ ===
Line 224: Line 224:
*''Full name'': '''Firstname LASTNAME'''
*''Full name'': '''Firstname LASTNAME'''


Then configure the plugin:
Stel daarna de plugin in:
*''Plugin Manager > LDAP > Configure'';
*''Plugin Manager > LDAP > Configure'';
*''Ldap server e.g. ldap://ldap.example.intra'': '''ldap://ldap.example.intra''';
*''Ldap server bijv. ldap://ldap.example.intra'': '''ldap://ldap.example.intra''';
*''Port number (default when omitted is 389)'': '''389''';
*''Port number (default : 389)'': '''389''';
*''LDAP version (LDAPv2 = 2), e.g. 3'': '''LDAPv3''';
*''LDAP version (LDAPv2 = 2), bijv. 3'': '''LDAPv3''';
*''Username prefix cn= or uid=: cn='': '''empty''';
*''Username prefix cn= of uid=: cn='': '''empty''';
*''Username suffix e.g. @example.intra or remaining part of ldap query'': '''empty''';
*''Username suffix bijv. @example.intra of resterend deel van ldap-query'': '''empty''';


Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname@example.intra''' en wachtwoord).
Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname@example.intra''' en wachtwoord).


==== Authenticatie met LDAP en "'sAMaccountName attribuut'' ====
==== Authenticatie met LDAP en sAMaccountName-attribuut ====


'''Note''': Authentication with ''sAMaccountName'' attribute (ie: firstname.lastname). Create a LimeSurvey user with the same name as the AD(active directory) user account :
'''NB''': Authenticatie met sAMaccountName-attribuut (bijv.: firstname.lastname). Maak een LimeSurvey gebruiker aan met dezelfde naam als een AD(active directory) gebruikersaccount:
*''Username'': '''firstname.lastname''';
*''Username'': '''firstname.lastname''';
*''Email'': '''firstname.lastname@example.intra''';
*''Email'': '''firstname.lastname@example.intra''';
*''Full name'': '''Firstname LASTNAME'''.
*''Full name'': '''Firstname LASTNAME'''.


Then configure the plugin : ''Plugin Manager > LDAP > Configure''.
Stel daarna de plugin in : ''Pluginbeheer > LDAP > Configureren''.
*''Ldap server e.g. ldap://ldap.example.com'': '''ldap://ldap.example.intra''';
*''Ldap server bijv. ldap://ldap.example.com'': '''ldap://ldap.example.intra''';
*''Port number (default when omitted is 389)'': '''389''';
*''Port number (default is 389)'': '''389''';
*''LDAP version (LDAPv2 = 2), e.g. 3'': '''LDAPv3''';
*''LDAP version (LDAPv2 = 2), bijv. 3'': '''LDAPv3''';
*''Username prefix cn= or uid=: cn='': '''empty''';
*''Username prefix cn= of uid=: cn='': '''empty''';
*''Username suffix e.g. @example.com or remaining part of ldap query'': '''@example.intra'''.
*''Username suffix bijv. @example.com of resterend deel van ldap-query'': '''@example.intra'''.


Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname''' en wachtwoord).
Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname''' en wachtwoord).


==== Authenticatie met LDAP's met "'sAMaccountName attribuut'' ====
==== Authenticatie met LDAPs en sAMaccountName-attribuut ====


'''Note''': Authentication with ''sAMaccountName'' attribute (ie: firstname.lastname). Create a LimeSurvey user with the same name as an AD (active directory) user account:
'''NB''': Authenticatie met sAMaccountName-attribuut (bijv.  firstname.lastname). Maak een LimeSurvey gebruiker aan met dezelfde naam als een AD(active directory) gebruikersaccount:
*''Username'': '''firstname.lastname''';
*''Username'': '''firstname.lastname''';
*''Email'': '''firstname.lastname@example.intra''';
*''Email'': '''firstname.lastname@example.intra''';
*''Full name'': '''Firstname LASTNAME''';
*''Full name'': '''Firstname LASTNAME''';
Then configure the plugin : ''Plugin Manager > LDAP > Configure''.
Stel daarna de plugin in : ''Pluginbeheer > LDAP > Configureren''.
*''Ldap server e.g. ldap://ldap.example.com'': '''ldaps://ldap.example.intra''';
*''Ldap server bijv. ldap://ldap.example.com'': '''ldaps://ldap.example.intra''';
*''Port number (default when omitted is 389)'': '''636''';
*''Port number (default is 389)'': '''636''';
*''LDAP version (LDAPv2 = 2), e.g. 3'': '''LDAPv3''';
*''LDAP version (LDAPv2 = 2), bijv. 3'': '''LDAPv3''';
*''Username prefix cn= or uid=: cn='': '''empty''';
*''Username prefix cn= of uid=: cn='': '''empty''';
*''Username suffix e.g. @example.intra or remaining part of ldap query'': '''@example.intra'''.
*''Username suffix bijv. @example.intra of resterend deel van ldap-query'': '''@example.intra'''.


Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname''' en wachtwoord).
Log in met de AD-credentials (gebruikersnaam: '''firstname.lastname''' en wachtwoord).
Line 269: Line 269:
'''Instellingen werkend met OpenLDAP en 2.05+ (git versie Feb. 2015) met AuthLDAP-plugin '''.
'''Instellingen werkend met OpenLDAP en 2.05+ (git versie Feb. 2015) met AuthLDAP-plugin '''.


==== Authenticatie met LDAP en "'uid attribuut'' ====
==== Authenticatie met LDAP en uid-attribuut ====


'''Note''': Authentication with ''uid'' attribute. Create a LimeSurvey user with the same name as a the LDAP user account.
'''NB''': Authenticatie met uid-attribuut. Maak een LimeSurvey gebruiker aan met dezelfde naam als het LDAP gebruikersaccount.


Then configure the plugin : ''Plugin Manager > LDAP > Configure''.
Stel daarna de plugin in : ''Pluginbeheer > LDAP > Configureren''.


* ''Ldap server e.g. ldap://ldap.mydomain.com'': '''ldap://ldap.mydomain.com''';
* ''Ldap server bijv. ldap://ldap.mydomain.com'': '''ldap://ldap.mydomain.com''';
* ''Port number (default when omitted is 389)'': '''(389 or leave blank)''';
* ''Port number (default is 389)''
* ''LDAP version (LDAPv2 = 2), e.g. 3'': '''LDAPv3''';
* ''LDAP version (LDAPv2 = 2), bijv. 3'': '''LDAPv3''';
* ''Select true if referrals must be followed (use false for ActiveDirectory)'': '''(leave blank)''';
* ''Kies true als ''referrals'' gevolgd moeten worden (false bij ActiveDirectory)'': '''(leeg laten)''';
* ''Check to enable Start-TLS encryption When using LDAPv3'': '''False''';
* ''Controleer inschakelen Start-TLS encryptie bij gebruik LDAPv3'': '''False''';
* ''Select how to perform authentication'': '''Search and bind''';
* ''Kies de manier van authenticatie'': '''Search and bind''';
* ''Attribute to compare to the given login can be uid, cn, mail, ...'': '''uid''';
* ''Attribuut om de gebruikte login mee te vergelijken, kan zijn uid, cn, mail, ...'': '''uid''';
* ''Base DN for the user search operation'': '''ou=people,dc=mydomain,dc=com''';
* ''Base DN voor basiszoeken'': '''ou=people,dc=mydomain,dc=com''';
* ''Optional extra LDAP filter to be ANDed to the basic (searchuserattribute=username) filter. Don't forget the outmost enclosing parentheses'': '''(leave blank)''';
* ''Optioneel extra LDAP-filter wordt met AND toegevoegd aan basisfilter (searchuserattribute=username). Vergeet niet de afsluithaakje'': '''(leeg laten)''';
* ''Optional DN of the LDAP account used to search for the end-user's DN. An anonymous bind is performed if empty.'': '''cn=admin,dc=mydomain,dc=com''';
* ''Optioneel DN van het LDAP-account gebruikt om te zoeken naar de eindgebruikers DN. Er is een anonieme binding indien dit niet is opgegeven.'': '''cn=admin,dc=mydomain,dc=com''';
* ''Password of the LDAP account used to search for the end-user's DN if previoulsy set.'': '''password''' (appears!);
* ''Password van het LDAP-account gebruikt om te zoeken naar de eindgebruikers DN. indien eerder gevuld.'': '''password''';
* ''Check to make default authentication method'': '''(as you wish)'''.
* ''Controleer om de default authenticatie te doen'': '''(eigen keuze)'''.


Log in met de LDAP-credentials (gebruikersnaam: '''user''' en wachtwoord).
Log in met de LDAP-credentials (gebruikersnaam: '''user''' en wachtwoord).


==== Authenticatie met OpenLDAP, ''uid attribute'', en groepsrestrictie [2.62+] ====
==== Authenticatie met OpenLDAP, uid-attribuut en groepsrestrictie [2.62+] ====


Some applications require a separate LDAP query (beyond the user search and bind to check password) to determine if the user has sufficient authorization. For example, let's assume that LDAP has a <code>Groups</code> OU that includes an entry identified by <code>cn=limeusers</code> and our policy is that for a user to be authorized to use LimeSurvey that entry must include an attribute of the form <code>memberUid=<i>username</i></code> where ''username'' is the username (uid) entered by the user attempting to login. To configure LDAP for that, set up basic ''uid'' authentication as above and then set the following additional (optional) parameters:
Applicatie vereisen soms een gescheiden LDAP-query (dus niet tegelijk bij het zoeken) om te bepalen of de gebruiker genoeg geauthorizeerd is. Als de LDAP een <code>Groups</code> OU heeft die een entry bevat geïdentificeerd bij <code>cn=limeusers</code> en het beleid is dat gebruikers geauthorizeerd worden om  LimeSurvey te gebruiken dan moet die entry een attribuut als <code>memberUid=<i>username</i></code> bevatten waar  ''username'' is de gebruikersnaam (uid) ingevuld door de gebruiker die wil inloggen. Om LDAP zo te configureren stel de basis ''uid'' authenticatie als bovengenoemd in en stel ook de volgende extra (optionele) parameters in:


* ''Optional base DN for group restriction'': <code>ou=Groups,dc=mydomain,dc=com</code>
* ''Optional base DN for group restriction'': <code>ou=Groups,dc=mydomain,dc=com</code>
* ''Optional filter for group restriction'': <code>(&(cn=limeusers)(memberUid=$username))</code>
* ''Optional filter for group restriction'': <code>(&(cn=limeusers)(memberUid=$username))</code>


Note:
NB:
# <code>$username</code> is a magic value (in the context of the filter parameter) that is replaced by the username entered by the user when logging in.
# <code>$username</code> is een ''magic value'' (filterparameter) die vervangen wordt door de gebruikersnaam van de gebruiker die inlogt.
# Although intended for testing group membership as above, this optional "group restriction" capability can be used to add any authorization check that can be expressed as a separate filtered search like this.
# Dit is oorspronkelijk bedoeld voor het testen van groepslidmaatschap, maar deze optionele "groepsrestrictie" mogelijkheid kan gebruikt worden als extra autorisatie die in een losstaand filter kan worden meegenoemen bij het zoeken.
# Before specifying a group restriction this way, verify that basic LDAP authentication is working correctly.
# Voordat je dit probeert, controleer op de basis LDAP-authenticatie goed werkt.
# If either of the group restriction parameters is empty, then the group restriction step will not be applied.
# als een van de groepsrestrictie parameters leeg is, dan vind er geen restrictie plaats.

Revision as of 19:35, 30 April 2018

  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.

Voorbeelden LDAP-configuratie

Voorbeeld instellingen AD2008 en 2.05+

Instellingen werkend met Active Directory 2008 en 2.05+ (build 140520) met AuthLDAP-plugin.

Authenticatie met LDAP en userPrincipalName-attribuut

NB: Authenticatie met userPrincipalName-attribuut (bijv.: firstname.lastname@example.intra). Voeg een LimeSurvey gebruiker toe met dezelfde naam als een AD(active directory) gebruikersaccount :

  • Username: firstname.lastname@example.intra
  • Ldap server - bijv. ldap://ldap.mydomain.com: ldap://ldap.mydomain.com;
  • Port number (default bij omtopicitted is 389);
  • LDAP version (LDAPv2 = 2), bijv. 3: 3;
  • Username prefix cn= of uid=: cn=;
  • Username suffix bijv. @mydomain.com of resterend deel van ldap-query: ,OU=people,DC=mydomain,DC=com;
  • Maak een LimeSurvey beheerder aan met dezelfde naam als een AD(active directory) gebruikersaccount;
  • Log in met de AD-credentials (gebruikersnaam en wachtwoord).

Voorbeeld instellingen AD2008 en 2.05+

Instellingen werkend met Active Directory 2008 en 2.05+ (build 140520) met AuthLDAP-plugin .

Authenticatie met LDAP en userPrincipalName-attribuut

NB: Authenticatie met userPrincipalName attribuut (bijv.: firstname.lastname@example.intra). Voeg een LimeSurvey gebruiker toe met dezelfde naam als een AD(active directory) gebruikersaccount :

  • Username: firstname.lastname@exaom: ldap://ldap.mydomain.com
  • Port number (default bij omtopicitted is 389):
  • LDAP version (LDAPv2 = 2), bijv. 3: 3
  • Username prefix cn= of uid=: cn=
  • Username suffix bijv. @mydomain.com of resterend deel van ldap-query: ,OU=people,DC=mydomain,DC=com
  • Maak een LimeSurvey beheerder aan met dezelfde naam als een AD(active directory) gebruikersaccount;
  • Log in met de AD-credentials (gebruikersnaam en wachtwoord).

Voorbeeld instellingen AD2008 en 2.05+

Instellingen werkend met Active Directory 20tra:

  • Full name: Firstname LASTNAME

Stel daarna de plugin in:

  • Plugin Manager > LDAP > Configure;
  • Ldap server bijv. ldap://ldap.example.intra: ldap://ldap.example.intra;
  • Port number (default : 389): 389;
  • LDAP version (LDAPv2 = 2), bijv. 3: LDAPv3;
  • Username prefix cn= of uid=: cn=: empty;
  • Username suffix bijv. @example.intra of resterend deel van ldap-query: empty;

Log in met de AD-credentials (gebruikersnaam: firstname.lastname@example.intra en wachtwoord).

Authenticatie met LDAP en sAMaccountName-attribuut

NB: Authenticatie met sAMaccountName-attribuut (bijv.: firstname.lastname). Maak een LimeSurvey gebruiker aan met dezelfde naam als een AD(active directory) gebruikersaccount:

  • Username: firstname.lastname;
  • Email: firstname.lastname@example.intra;
  • Full name: Firstname LASTNAME.

Stel daarna de plugin in : Pluginbeheer > LDAP > Configureren.

  • Ldap server bijv. ldap://ldap.example.com: ldap://ldap.example.intra;
  • Port number (default is 389): 389;
  • LDAP version (LDAPv2 = 2), bijv. 3: LDAPv3;
  • Username prefix cn= of uid=: cn=: empty;
  • Username suffix bijv. @example.com of resterend deel van ldap-query: @example.intra.

Log in met de AD-credentials (gebruikersnaam: firstname.lastname en wachtwoord).

Authenticatie met LDAPs en sAMaccountName-attribuut

NB: Authenticatie met sAMaccountName-attribuut (bijv. firstname.lastname). Maak een LimeSurvey gebruiker aan met dezelfde naam als een AD(active directory) gebruikersaccount:

  • Username: firstname.lastname;
  • Email: firstname.lastname@example.intra;
  • Full name: Firstname LASTNAME;

Stel daarna de plugin in : Pluginbeheer > LDAP > Configureren.

  • Ldap server bijv. ldap://ldap.example.com: ldaps://ldap.example.intra;
  • Port number (default is 389): 636;
  • LDAP version (LDAPv2 = 2), bijv. 3: LDAPv3;
  • Username prefix cn= of uid=: cn=: empty;
  • Username suffix bijv. @example.intra of resterend deel van ldap-query: @example.intra.

Log in met de AD-credentials (gebruikersnaam: firstname.lastname en wachtwoord).

Voorbeeld instellingen OpenLDAP en 2.05+

Instellingen werkend met OpenLDAP en 2.05+ (git versie Feb. 2015) met AuthLDAP-plugin .

Authenticatie met LDAP en uid-attribuut

NB: Authenticatie met uid-attribuut. Maak een LimeSurvey gebruiker aan met dezelfde naam als het LDAP gebruikersaccount.

Stel daarna de plugin in : Pluginbeheer > LDAP > Configureren.

  • Ldap server bijv. ldap://ldap.mydomain.com: ldap://ldap.mydomain.com;
  • Port number (default is 389)
  • LDAP version (LDAPv2 = 2), bijv. 3: LDAPv3;
  • Kies true als referrals gevolgd moeten worden (false bij ActiveDirectory): (leeg laten);
  • Controleer inschakelen Start-TLS encryptie bij gebruik LDAPv3: False;
  • Kies de manier van authenticatie: Search and bind;
  • Attribuut om de gebruikte login mee te vergelijken, kan zijn uid, cn, mail, ...: uid;
  • Base DN voor basiszoeken: ou=people,dc=mydomain,dc=com;
  • Optioneel extra LDAP-filter wordt met AND toegevoegd aan basisfilter (searchuserattribute=username). Vergeet niet de afsluithaakje: (leeg laten);
  • Optioneel DN van het LDAP-account gebruikt om te zoeken naar de eindgebruikers DN. Er is een anonieme binding indien dit niet is opgegeven.: cn=admin,dc=mydomain,dc=com;
  • Password van het LDAP-account gebruikt om te zoeken naar de eindgebruikers DN. indien eerder gevuld.: password;
  • Controleer om de default authenticatie te doen: (eigen keuze).

Log in met de LDAP-credentials (gebruikersnaam: user en wachtwoord).

Authenticatie met OpenLDAP, uid-attribuut en groepsrestrictie [2.62+]

Applicatie vereisen soms een gescheiden LDAP-query (dus niet tegelijk bij het zoeken) om te bepalen of de gebruiker genoeg geauthorizeerd is. Als de LDAP een Groups OU heeft die een entry bevat geïdentificeerd bij cn=limeusers en het beleid is dat gebruikers geauthorizeerd worden om LimeSurvey te gebruiken dan moet die entry een attribuut als memberUid=username bevatten waar username is de gebruikersnaam (uid) ingevuld door de gebruiker die wil inloggen. Om LDAP zo te configureren stel de basis uid authenticatie als bovengenoemd in en stel ook de volgende extra (optionele) parameters in:

  • Optional base DN for group restriction: ou=Groups,dc=mydomain,dc=com
  • Optional filter for group restriction: (&(cn=limeusers)(memberUid=$username))

NB:

  1. $username is een magic value (filterparameter) die vervangen wordt door de gebruikersnaam van de gebruiker die inlogt.
  2. Dit is oorspronkelijk bedoeld voor het testen van groepslidmaatschap, maar deze optionele "groepsrestrictie" mogelijkheid kan gebruikt worden als extra autorisatie die in een losstaand filter kan worden meegenoemen bij het zoeken.
  3. Voordat je dit probeert, controleer op de basis LDAP-authenticatie goed werkt.
  4. als een van de groepsrestrictie parameters leeg is, dan vind er geen restrictie plaats.