x

Capitolele principale

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. LimeSurvey Cloud - Ghid de inițiere rapidă
  3. LimeSurvey CE - Instalare
  4. Cum să proiectați un sondaj bun (Ghid)
  5. Noțiuni de bază
  6. Configurați LimeSurvey
  7. Sondaje - Introducere
  8. Setările sondajului
  9. Vizualizați meniul sondajului
  10. Vedeți structura sondajului
  11. Introducere - Întrebări
  12. Introducere - Grupuri de întrebări
  13. Introducere - Managementul Sondajelor
  14. Opțiunile barei de instrumente pentru sondaj
  15. Sondaj multilingv
  16. Ghid de inițiere rapidă - ExpressionScript
  17. Caracteristici avansate
  18. Întrebări generale frrecvente
  19. Depanare
  20. Soluții alternative
  21. Licență
  22. Jurnal de modificare a versiunii
  23. Pluginuri - Avansat
 Actions

LDAP settings/ro: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "În acest moment, totul este configurat pentru a permite primei căutări LDAP să găsească UID-urile utilizatorilor corespunzătoare grupurilor selectate și va fi completa..."
Maren.fritz (talk | contribs)
Created page with "Găsiți mai multe informații despre structura Active Directory LDAP pe [https://technet.microsoft.com/en-us/library/bb727030.aspx Active Directory Architecture] și [https:/..."
 
(9 intermediate revisions by the same user not shown)
Line 105: Line 105:
În acest moment, totul este configurat pentru a permite primei căutări LDAP să găsească UID-urile utilizatorilor corespunzătoare grupurilor selectate și va fi completat automat un filtru de căutare a utilizatorilor.
În acest moment, totul este configurat pentru a permite primei căutări LDAP să găsească UID-urile utilizatorilor corespunzătoare grupurilor selectate și va fi completat automat un filtru de căutare a utilizatorilor.


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:
Cu toate acestea, puteți restricționa care dintre acești „candidați de utilizator” vor fi selectați completând filtrul automat de utilizator calculat din UID-urile membrilor. Acesta este, desigur, opțional:
*'''$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']:''' DN-ul de bază pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu această bază) va fi selectat;
*'''$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']:''' Se va selecta domeniul de aplicare pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu baza de utilizatori+sfera) va fi selectat;
*'''$ldap_queries<nowiki>[</nowiki>$query_id]<nowiki>[</nowiki>'userfilter']:''' It is a filter that applies to each user candidate entry (on its attributes) to add another selection.
*'''$ldap_queries<nowiki> [</nowiki> $query_id]<nowiki> [</nowiki> 'userfilter']:''' Este un filtru care se aplică fiecărei intrări candidat de utilizator (pe atributele sale) pentru a adăuga o altă selecție.


=== What about Active Directory?===
=== Ce zici de Active Directory?===


Active Directory (AD) is a Microsoft registry that can be queried by using the LDAP protocol.
Active Directory (AD) este un registru Microsoft care poate fi interogat utilizând protocolul LDAP.


It is then possible to use its content for LimeSurvey token queries, but this requires knowledge on how AD is organized.
Apoi este posibil să se utilizeze conținutul său pentru interogări de simbol LimeSurvey, dar acest lucru necesită cunoștințe despre modul în care este organizat AD.
* The LDAP root base is dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1
* Baza rădăcină LDAP este 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
==> De exemplu, dacă compania dvs. deține domeniul DNS „my-company.com” și domeniul Windows este „employees”, atunci baza dvs. rădăcină este 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);
* Utilizatorii și grupurile de utilizatori sunt stocate sub cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 (vă rugăm să rețineți că acest lucru nu este ou=users);
* Active Directory Groups:
* Active Directory Groups:
** Groups objects contain DN of members in their 'member' attribute;
** Groups obiectele conțin DN de membri în atributul lor „member”;
** Group memberships are also stored in the memberOf attribute of each user entry. This attribute contains DNs of groups the user belongs to;
** Membrii grupurilor sunt, de asemenea, stocate în atributul memberOf al fiecărei intrări de utilizator. Acest atribut conține DN-uri ale grupurilor din care aparține utilizatorul;
** some groups are in CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1:
** unele grupuri sunt în 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;
*** De exemplu: cn=Administrator,CN =Builtin,dc=numele_domeniului_meu_windows,dc=dns_sufix2,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:
În unele cazuri, nu este la fel de ușor să interogați un director activ, așa că iată un exemplu de configurație pentru obținerea unor informații despre un director activ:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
//Connection to the active directory Server:
//Conexiune la directorul activ 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'] = "niciunul"; // Majoritatea serverelor AD LDAP nu vor avea criptarea setata implicit
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['binddn'] = "domain\\user";
$ldap_server[$serverId]['binddn'] = "domeniu\\utilizator „;
$ldap_server[$serverId]['bindpw'] = "userpassword";
$ldap_server[$serverId]['bindpw'] = „parolă de utilizator”;
//$ldap_server[$serverId]['binddn'] = "CN=user,OU=user_group,DC=xxx,DC=yyy"; this one will not work with active directory, that´s why you need to use "domain\\user"
//$ldap_server[$serverId]['binddn'] = „CN=utilizator, OU=grup de utilizatori, DC=xxx ,DC=aaa"; acesta nu va funcționa cu directorul activ, de aceea trebuie să utilizați „domeniu\\utilizator”
//Here is a sample query for getting all active users of an active directory:
//Iată un exemplu de interogare pentru a obține toți utilizatorii activi ai unui director activ:
$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'] = 'Personal cu un cont activat';
$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)) nu puteți cere directorului activ pentru un utilizator activ, dar puteți solicita un utilizator neinactiv
$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'] = 'givenname';
$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 by phpsv
$ldap_queries[$query_id]['token_attr'] = ''; // Lăsați necompletat pentru generarea automată a simbolului de către 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:
//Filtrarea grupului nu a fost posibilă în directorul activ, trebuie să adăugați atributul memberOf al unui utilizator. Iată un exemplu de interogare pentru a obține toți utilizatorii activi care sunt membri ai grupului „samplegroup” în directorul activ:
$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'] = 'Toți membrii 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'] = 'givenname';
$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 by phpsv
$ldap_queries[$query_id]['token_attr'] = ''; // Lăsați necompletat pentru generarea automată a simbolului de către 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'] = '';
</syntaxhighlight>
</syntaxhighlight>


Another example User query:
Un alt exemplu de interogare de utilizator:
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">  
$ldap_queries[$query_id]['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' '')))'; // AD nu recunoaște conturile activate în mod normal, așa că, în schimb, verificăm că utilizatorii nu sunt dezactivați
</syntaxhighlight>
</syntaxhighlight>  
* As suggested in the config file, consider adding (!(email=*)) to your user filters to ignore users with no email address.
* După cum este sugerat în fișierul de configurare, luați în considerare adăugarea (!(email=*)) la filtrele dvs. de utilizator pentru a ignora utilizatorii fără adresă de e-mail.


Example group query:
Exemplu de interogare de grup:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
$ldap_queries[$query_id]['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='''grup''')(cn=Administratori de domeniu))'; // AD nu folosește numele atributului standard pentru grupuri, așa că folosiți acest exemplu.
</syntaxhighlight>
</syntaxhighlight>


Find more information about the Active Directory LDAP structure on [https://technet.microsoft.com/en-us/library/bb727030.aspx Active Directory Architecture] and [https://msdn.microsoft.com/en-us/library/cc223122.aspx Active Directory Technical Specification].
Găsiți mai multe informații despre structura Active Directory LDAP pe [https://technet.microsoft.com/en-us/library/bb727030.aspx Active Directory Architecture] și [https://msdn.microsoft.com/en-us/ library/cc223122.aspx Specificații tehnice Active Directory].

Latest revision as of 09:21, 3 November 2023

  Atenție : Această caracteristică permite administratorilor de sondaj LimeSurvey să importe jetoane prin LDAP. Dacă aveți nevoie de o autentificare LDAP, vă rugăm să consultați AuthLDAP plugin.


General

Trebuie să activați suportul LDAP în config.php și să configurați parametrii LDAP în config/ldap.php pentru a utiliza această funcție.

Template:Alerta

Activarea LDAP în config.php

  • $enableLdap: dacă doriți să utilizați funcțiile LDAP în LimeSurvey, trebuie să setați acest parametru la true (este setat implicit la false):
'config'=>array(
 'debug'=>0,
 'debugsql'=>0,
 'enableLdap'=>true,
 )

Definirea serverelor LDAP

Mai întâi definiți opțiunile de conexiune la serverul LDAP în „application/config/ldap.php”. Pentru fiecare server, sunt disponibile următoarele opțiuni:

  • $serverId: Un număr întreg care identifică acest server LDAP. Este folosit în definițiile de interogare pentru a lega un server la o anumită interogare;
  • $ldap_server [ $serverId] [ 'server']: Adresa IP sau numele DNS al serverului LDAP. Dacă utilizați conexiuni securizate SSL (LDAP-uri sau LDAP+Start-TLS), acest nume trebuie să corespundă certificatului CN al serverului (sau SubjectAlternativeName);
  • $ldap_server [ $serverId] [ 'protoversion']: Poate fi 'ldapv2' sau 'ldapv3', în funcţie de protocolul acceptat de serverul dumneavoastră. „ldapv3” este protocolul preferat. Cu toate acestea, dacă doriți să utilizați conexiuni criptate, rețineți că LDAP-urile sunt acceptate în modul „ldapv2”, în timp ce Start-TLS este metoda de criptare pentru „ldapv3”;
  • $ldap_server [ $serverId] [ 'encrypt']: Definește metoda de criptare utilizată. „ldaps” este acceptat pentru serverele „ldapv2”, „start-tls” pentru serverele „ldapv3”. Cuvântul cheie „none” este folosit pentru comunicațiile LDAP cu text clar;
    • Nu uitați că pentru criptarea „ldaps” sau „start-tls”, serverul web trebuie să poată verifica certificatul serverului LDAP. Astfel, trebuie să vă definiți autoritatea de certificare în biblioteca openldap (de obicei, acest lucru se face în fișierul /etc/openldap/ldap.conf sub Linux).
  • $ldap_server [ $serverId] [ 'referrals']: Este un parametru boolean care definește dacă recomandările trebuie urmate sau nu (utilizați false pentru ActiveDirectory);
  • $ldap_server [ $serverId] [ 'encoding']: Este un parametru opțional care oferă codificarea folosită de directorul LDAP pentru a stoca șiruri. De obicei, nu trebuie să configurați acest parametru deoarece codarea implicită presupusă, „utf-8”, este codarea standard pentru directoarele LDAP. Cu toate acestea, dacă utilizați Active Directory și aveți probleme la importarea șirurilor accentuate, atunci încercați să setați acest parametru la codificarea folosită în zona dvs. (de exemplu, „cp850” pentru Europa de Vest). Puteți consulta lista derulantă „Setul de caractere al fișierului” din GUI Import Token from CSV file pentru a avea lista completă de codificări acceptate.

Apoi, trebuie să definiți ce autentificare este necesară pentru a obține acces la director. Dacă accesul „anonim” este permis, NU setați următorii doi parametri, altfel setați-i corespunzător:

  • $ldap_server [ $serverId] [ 'binddn']: DN-ul utilizatorului 'LDAP' căruia îi este permis să citească directorul;
  • $ldap_server [ $serverId] [ 'bindpw']: Parola pentru utilizatorul LDAP de mai sus.

Dacă trebuie să definiți alte servere LDAP, adăugați următoarea linie pentru a incrementa serverID și a defini noi parametri:

  • $serverId++.

Definirea interogărilor în config/ldap.php

Atenție: când este necesar un „nume de atribut ldap” într-unul dintre acești parametri, „utilizați numai nume cu minuscule”: de exemplu, displayname și NU displayName.

Vă rugăm să consultați fișierul config/ldap.php deoarece conține exemple de configurare.

Interogări simple

Să începem cu interogări simple. Aceste interogări filtrează numai intrările LDAP pe baza propriilor atribute și locație. Ele sunt de obicei suficiente pentru interogarea ActiveDirectory.

  • $query_id: este id-ul interogării LDAP;
  • $ldap_queries [ $query_id] [ 'ldapServerId']: Leagă interogarea la un anumit server;
  • $ldap_queries [ $query_id] [ 'nume']: Șir care descrie interogarea. Acesta va fi afișat în GUI;
  • $ldap_queries [ $query_id] [ 'userbase']: DN rădăcină de utilizat pentru căutările utilizatorilor;
  • $ldap_queries [ $query_id] [ 'userfilter']: Este un filtru folosit pentru a selecta intrările potenţialilor utilizatori. Trebuie să fie cuprins între paranteze;
  • $ldap_queries [ $query_id] [ 'userscope']: domeniul de aplicare al căutării LDAP pentru utilizatori ('bază', 'unul' sau 'sub');
  • $ldap_queries [ $query_id] [ 'firstname_attr']: Atribut Ldap care va fi mapat la câmpul Firstname al intrării de simbol;
  • $ldap_queries [ $query_id] [ 'lastname_attr']: Atribut Ldap care va fi mapat la câmpul Lastname al intrării de simbol;
  • $ldap_queries [ $query_id] [ 'email_attr']: Atribut Ldap care va fi mapat la câmpul adresei de e-mail al intrării de simbol.

Opțional, puteți prelua mai multe informații din directorul:

  • $ldap_queries [ $query_id] [ 'token_attr']: Atribut Ldap care va fi mapat la codul jetonului;
  • $ldap_queries [ $query_id] [ 'language']: Atribut Ldap care va fi mapat la codul limbii utilizatorului;
  • $ldap_queries [ $query_id] [ 'attr1']: Atribut Ldap care va fi mapat la câmpul attribute_1;
  • $ldap_queries [ $query_id] [ 'attr2']: Atribut Ldap care va fi mapat la câmpul attribute_2.

Interogări de grup combinate cu membri DN

Să vedem acum cum să definim o interogare mai complicată.

Următoarele interogări utilizează o primă căutare LDAP care analizează grupurile LDAP. Un grup LDAP este o intrare LDAP care conține referințe la intrările utilizatorilor sub formă de:

  • ID-uri de utilizator (de exemplu, posixGroups fac) ==> Consultați secțiunea următoare
  • Sau DN-uri de utilizator (de exemplu, groupofnames și groupofuniquenames face) => vezi mai jos

Aici ne ocupăm de grupuri care conțin DN-uri de utilizator:

  • define $query_id, $ldap_queries [ $query_id] [ 'ldapServerId'], $ldap_queries [ $query_id] [ „nume”] după cum s-a explicat mai sus.

Apoi definiți parametrii filtrului de grup:

  • $ldap_queries [ $query_id] [ 'groupbase']: DN-ul rădăcină de la care doriți să începeți căutarea intrărilor de grup;
  • $ldap_queries [ $query_id] [ 'groupfilter']: Filtrul LDAP care va selecta potențialele intrări de grup;
  • $ldap_queries [ $query_id] [ 'groupscope']: Domeniul de aplicare al căutării LDAP pentru grupuri ('on', 'base' sau 'sub');
  • $ldap_queries [ $query_id] [ 'groupmemberattr']: Numele atributului LDAP din intrarea de grup care va conține referințe la intrările utilizatorilor;
  • $ldap_queries [ $query_id] [ 'groupmemberisdn']: TRUE.

În acest moment, totul este configurat pentru a permite primei căutări LDAP să găsească utilizatorii corespunzători grupurilor selectate. Cu toate acestea, puteți restricționa care dintre acești „candidați utilizatori” vor fi selectați aplicând un alt filtru asupra lor. Acesta este, desigur, opțional:

  • $ldap_queries [ $query_id] [ 'userbase']: DN-ul de bază pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu această bază) va fi selectat;
  • $ldap_queries [ $query_id] [ 'userscope']: Se va selecta domeniul de aplicare pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu baza de utilizatori+sfera) va fi selectat;
  • $ldap_queries [ $query_id] [ 'userfilter']: Este un filtru care se aplică fiecărei intrări candidat de utilizator (pe atributele sale) pentru a adăuga o altă selecție.

Interogări de grup combinate cu membri UID

Să vedem acum cum să definim o interogare de grup combinată atunci când membrii grupului sunt UID-uri utilizator și nu DN-uri utilizator.

În ceea ce privește interogările de grup cu membri DN-uri, aceste interogări folosesc o primă căutare LDAP care caută intrări de grupuri LDAP și își obțin membrii. Aceste valori ale membrilor sunt apoi utilizate într-un filtru de căutare de utilizator pentru a căuta intrările corespunzătoare. Astfel, un alt parametru trebuie configurat pentru a defini atributul utilizatorului din intrarea utilizatorului care ar trebui să se potrivească cu UID-ul membrului găsit în grupuri.

Să revizuim parametrii necesari:

  • define $query_id, $ldap_queries [ $query_id] [ 'ldapServerId'], $ldap_queries [ $query_id] [ „nume”] după cum s-a explicat mai sus

Apoi definiți parametrii filtrului de grup:

  • $ldap_queries [ $query_id] [ 'groupbase']: DN-ul rădăcină de la care doriți să începeți căutarea intrărilor de grup;
  • $ldap_queries [ $query_id] [ 'groupfilter']: Filtrul LDAP care va selecta potențialele intrări de grup;
  • $ldap_queries [ $query_id] [ 'groupscope']: Domeniul de aplicare al căutării LDAP pentru grupuri ('on', 'base' sau 'sub');
  • $ldap_queries [ $query_id] [ 'groupmemberattr']: Numele atributului LDAP din intrarea de grup care va conține referințe la intrările utilizatorilor;
  • $ldap_queries [ $query_id] [ 'groupmemberisdn']: FALSE;
  • $ldap_queries [ $query_id] [ 'useridattr']: numele atributului utilizatorului care trebuie să se potrivească cu UID-ul găsit în membrii grupului.

În acest moment, totul este configurat pentru a permite primei căutări LDAP să găsească UID-urile utilizatorilor corespunzătoare grupurilor selectate și va fi completat automat un filtru de căutare a utilizatorilor.

Cu toate acestea, puteți restricționa care dintre acești „candidați de utilizator” vor fi selectați completând filtrul automat de utilizator calculat din UID-urile membrilor. Acesta este, desigur, opțional:

  • $ldap_queries [ $query_id] [ 'userbase']: DN-ul de bază pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu această bază) va fi selectat;
  • $ldap_queries [ $query_id] [ 'userscope']: Se va selecta domeniul de aplicare pentru căutarea LDAP de utilizator (numai candidatul de utilizator care se potrivește cu baza de utilizatori+sfera) va fi selectat;
  • $ldap_queries [ $query_id] [ 'userfilter']: Este un filtru care se aplică fiecărei intrări candidat de utilizator (pe atributele sale) pentru a adăuga o altă selecție.

Ce zici de Active Directory?

Active Directory (AD) este un registru Microsoft care poate fi interogat utilizând protocolul LDAP.

Apoi este posibil să se utilizeze conținutul său pentru interogări de simbol LimeSurvey, dar acest lucru necesită cunoștințe despre modul în care este organizat AD.

  • Baza rădăcină LDAP este dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1

==> De exemplu, dacă compania dvs. deține domeniul DNS „my-company.com” și domeniul Windows este „employees”, atunci baza dvs. rădăcină este dc=employees,dc=my-company,dc=com

* Utilizatorii și grupurile de utilizatori sunt stocate sub cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 (vă rugăm să rețineți că acest lucru nu este ou=users);
  • Active Directory Groups:
    • Groups obiectele conțin DN de membri în atributul lor „member”;
    • Membrii grupurilor sunt, de asemenea, stocate în atributul memberOf al fiecărei intrări de utilizator. Acest atribut conține DN-uri ale grupurilor din care aparține utilizatorul;
    • unele grupuri sunt în CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1:
      • De exemplu: cn=Administrator,CN =Builtin,dc=numele_domeniului_meu_windows,dc=dns_sufix2,dc=dns_suffix1;

În unele cazuri, nu este la fel de ușor să interogați un director activ, așa că iată un exemplu de configurație pentru obținerea unor informații despre un director activ:

//Conexiune la directorul activ 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'] = "niciunul"; // Majoritatea serverelor AD LDAP nu vor avea criptarea setata implicit
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['binddn'] = "domeniu\\utilizator „;
$ldap_server[$serverId]['bindpw'] = „parolă de utilizator”;
//$ldap_server[$serverId]['binddn'] = „CN=utilizator, OU=grup de utilizatori, DC=xxx ,DC=aaa"; acesta nu va funcționa cu directorul activ, de aceea trebuie  utilizați „domeniu\\utilizator”
//Iată un exemplu de interogare pentru a obține toți utilizatorii activi ai unui director activ:
$query_id=0 ;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'Personal cu un cont activat';
$ldap_queries[$query_id] ['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(!(userAccountControl=514) ))';
//(!(userAccountControl=514)) nu puteți cere directorului activ pentru un utilizator activ, dar puteți solicita un utilizator neinactiv
$ldap_queries[$query_id][ 'userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'givenname';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
 $ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Lăsați necompletat pentru generarea automată a simbolului de către phpsv
$ldap_queries[$query_id]['language'] = ''';
$ldap_queries[$query_id]['attr1'] = '';
$ ldap_queries[$query_id]['attr2'] = '';
//Filtrarea grupului nu a fost posibilă în directorul activ, trebuie să adăugați atributul memberOf al unui utilizator. Iată un exemplu de interogare pentru a obține toți utilizatorii activi care sunt membri ai grupului „samplegroup” în directorul activ:
$query_id++;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ ldap_queries[$query_id]['name'] = 'Toți membrii 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'] = 'givenname';
$ldap_queries[$ query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = ''; // Lăsați necompletat pentru generarea automată a simbolului de către phpsv
$ldap_queries[$query_id]['language'] = ''';
$ldap_queries[$query_id]['attr1'] = '';
$ ldap_queries[$query_id]['attr2'] = '';

Un alt exemplu de interogare de utilizator:

 
$ldap_queries[$query_id]['userfilter'] = '(&('''objectCategory=Person''')(objectClass='''user''')(!('''userAccountControl=514' '')))'; // AD nu recunoaște conturile activate în mod normal, așa că, în schimb, verificăm că utilizatorii nu sunt dezactivați
  • După cum este sugerat în fișierul de configurare, luați în considerare adăugarea (!(email=*)) la filtrele dvs. de utilizator pentru a ignora utilizatorii fără adresă de e-mail.

Exemplu de interogare de grup:

$ldap_queries[$query_id]['groupfilter'] = '(&(objectClass='''grup''')(cn=Administratori de domeniu))'; // AD nu folosește numele atributului standard pentru grupuri, așa că folosiți acest exemplu.

Găsiți mai multe informații despre structura Active Directory LDAP pe Active Directory Architecture și library/cc223122.aspx Specificații tehnice Active Directory.