Actions

LDAP beállítások

From LimeSurvey Manual

This page is a translated version of the page LDAP settings and the translation is 100% complete.
  Figyelem : Ez a funkció lehetővé teszi a LimeSurvey felmérés rendszergazdái számára, hogy tokeneket importáljanak LDAP-n keresztül. Ha LDAP-hitelesítésre van szüksége, kérjük, olvassa el a AuthLDAP plugin.


Általános

A funkció használatához engedélyeznie kell az LDAP támogatást a config.php fájlban, és be kell állítania az LDAP paramétereket a config/ldap.php fájlban.

Template:Figyelmeztetés

LDAP engedélyezése a config.php-ben

  • $enableLdap: Ha LDAP függvényeket szeretne használni a LimeSurvey-ben, ezt a paramétert igazra kell állítani (alapértelmezés szerint false):
'config'=>array(
 'debug'=>0,
 'debugsql'=>0,
 'enableLdap'=>true,
 )

LDAP szerverek meghatározása

Először adja meg az LDAP kiszolgáló csatlakozási beállításait az "application/config/ldap.php" fájlban. Minden szerverhez a következő opciók állnak rendelkezésre:

  • $serverId: Ezt az LDAP-kiszolgálót azonosító egész szám. A lekérdezésdefiníciókban arra használják, hogy egy szervert egy adott lekérdezéshez rendeljenek;
  • '$ldap_server [ $serverId] [ 'szerver']: Az LDAP-szerver IP-címe vagy DNS-neve. Ha SSL-védett kapcsolatokat használ (LDAP vagy LDAP+Start-TLS), ennek a névnek meg kell egyeznie a szerver tanúsítvány CN-jével (vagy SubjectAlternativeName);
  • '$ldap_server [ $serverId] [ 'protoversion']: Lehet 'ldapv2' vagy 'ldapv3' a szerver által támogatott protokolltól függően. Az 'ldapv3' a preferált protokoll. Ha azonban titkosított kapcsolatokat szeretne használni, vegye figyelembe, hogy az LDAP-ok 'ldapv2' módban támogatottak, míg a Start-TLS az 'ldapv3';
  • '$ldap_server titkosítási módszere [ $serverId] [ 'titkosítás']: Meghatározza a használt titkosítási módszert. Az 'ldaps' az 'ldav2' szervereknél, a 'start-tls' az 'ldapv3' szervereknél támogatott. A 'none' kulcsszót a tiszta szövegű LDAP-kommunikációhoz használják;
    • Ne feledje, hogy 'ldaps' vagy 'start-tls' titkosítás esetén a webszervernek képesnek kell lennie az LDAP-szerver tanúsítványának ellenőrzésére. Ezért meg kell határoznia a tanúsító hatóságot az openldap könyvtárban (ez általában az /etc/openldap/ldap.conf fájlban történik linux alatt).
  • '$ldap_server [ $serverId] [ 'referrals']: Ez egy logikai paraméter, amely meghatározza, hogy a hivatkozásokat követni kell-e vagy sem (hamis értéket használjon az ActiveDirectoryhoz);
  • $ldap_server [ $serverId] [ 'encoding']: Ez egy opcionális paraméter, amely megadja az LDAP-könyvtár által a karakterláncok tárolására használt kódolást. Ezt a paramétert általában nem kell beállítani, mivel az alapértelmezett feltételezett kódolás, az 'utf-8', az LDAP-címtárak szabványos kódolása. Ha azonban Active Directoryt használ, és problémái vannak az ékezetes karakterláncok importálásával, próbálja meg beállítani ezt a paramétert az Ön területén használt kódolásra (például 'cp850' Nyugat-Európa esetében). A támogatott kódolások teljes listájának megtekintéséhez tekintse meg a „Fájl karakterkészlete” legördülő listát a Token importálása CSV-fájlból GUI-ban.

Ezután meg kell határoznia, hogy milyen hitelesítés szükséges a címtárhoz való hozzáféréshez. Ha az "anonim" hozzáférés engedélyezett, NE állítsa be a következő két paramétert, ellenkező esetben állítsa be őket megfelelően:

  • '$ldap_server [ $serverId] [ 'binddn']: A könyvtár olvasására jogosult 'LDAP' felhasználó DN-je;
  • '$ldap_server [ $serverId] [ 'bindpw']: Jelszó a fenti LDAP felhasználóhoz.

Ha más LDAP-kiszolgálókat is meg kell határoznia, adja hozzá a következő sort a szerverazonosító növeléséhez és új paraméterek meghatározásához:

  • $serverId++.

== Lekérdezések meghatározása a config/ldap.php== fájlban

Figyelem: ha ezen paraméterek egyikében egy ldap attribútumnév szükséges, csak kisbetűs neveket használjon: például displayname és NOT displayName.

Kérjük, tekintse meg a config/ldap.php fájlt, amely konfigurációs mintákat tartalmaz.

Egyszerű lekérdezések

Kezdjük az egyszerű lekérdezésekkel. Ezek a lekérdezések csak saját attribútumuk és helyük alapján szűrik az LDAP bejegyzéseket. Általában elegendőek az ActiveDirectory lekérdezéséhez.

  • $query_id: az LDAP lekérdezés azonosítója;
  • $ldap_queries [ $query_id] [ 'ldapServerId']: Egy adott szerverhez köti a lekérdezést;
  • '$ldap_queries [ $query_id] [ 'name']: A lekérdezést leíró karakterlánc. Megjelenik a grafikus felhasználói felületen;
  • $ldap_queries [ $query_id] [ 'userbase']: Root DN a felhasználói keresésekhez;
  • '$ldap_queries [ $query_id] [ 'userfilter']: Ez egy szűrő, amely a potenciális felhasználók bejegyzéseinek kiválasztására szolgál. Zárójelek közé kell tenni;
  • '$ldap_queries [ $query_id] [ 'userscope']: a felhasználók LDAP keresésének hatóköre ('base', 'one' vagy 'sub');
  • '$ldap_queries [ $query_id] [ 'firstname_attr']: Ldap attribútum, amely a token bejegyzés Firstname mezőjére lesz leképezve;
  • $ldap_queries [ $query_id] [ 'lastname_attr']: Ldap attribútum, amely a token bejegyzés Vezetéknév mezőjére lesz leképezve;
  • '$ldap_queries [ $query_id] [ 'email_attr']: Ldap attribútum, amely a token bejegyzés e-mail cím mezőjére lesz leképezve.

Opcionálisan további információkat is lekérhet a következő könyvtárból:

  • $ldap_queries [ $query_id] [ 'token_attr']: Ldap attribútum, amely a token kódra lesz leképezve;
  • $ldap_queries [ $query_id] [ 'language']: Ldap attribútum, amely a felhasználói nyelvi kódra lesz leképezve;
  • '$ldap_queries [ $query_id] [ 'attr1']: Ldap attribútum, amely az attribútum_1 mezőre lesz leképezve;
  • '$ldap_queries [ $query_id] [ 'attr2']: Ldap attribútum, amely az attribútum_2 mezőre lesz leképezve.

Kombinált csoportlekérdezések DN-tagokkal

Nézzük meg, hogyan határozhatunk meg egy bonyolultabb lekérdezést.

A következő lekérdezések az első LDAP-keresést használják, amely az LDAP-csoportokat vizsgálja. Az LDAP-csoport egy olyan LDAP-bejegyzés, amely hivatkozásokat tartalmaz a felhasználók bejegyzéseire a következő formában:

  • felhasználói azonosítók (például posixGroups do) ==> Lásd a következő részt
  • Vagy felhasználói DN-ek (például groupofnames és groupofuniquenames do) ==> lásd alább

Itt a felhasználói DN-eket tartalmazó csoportokkal foglalkozunk:

  • define $query_id, $ldap_queries [ $query_id] [ 'ldapServerId'], $ldap_queries [ $query_id] [ 'név'] a fentebb leírtak szerint.

Ezután adja meg a csoportszűrő paramétereit:

  • '$ldap_queries [ $query_id] [ 'groupbase']: A gyökér DN, amelyből a csoportbejegyzések keresését el szeretné kezdeni;
  • '$ldap_queries [ $query_id] [ 'groupfilter']: Az LDAP szűrő, amely kiválasztja a lehetséges csoportbejegyzéseket;
  • '$ldap_queries [ $query_id] [ 'groupscope']: A csoportok LDAP-keresésének hatóköre ('on', 'base' vagy 'sub');
  • '$ldap_queries [ $query_id] [ 'groupmemberattr']: Az LDAP attribútum neve a csoportbejegyzésben, amely hivatkozásokat fog tartalmazni a felhasználók bejegyzéseire;
  • $ldap_queries [ $query_id] [ 'groupmemberisdn']:' TRUE.

Ezen a ponton minden be van állítva, hogy az első LDAP-keresés megtalálja a kiválasztott csoportoknak megfelelő felhasználókat. Korlátozhatja azonban, hogy ezek közül a "felhasználójelöltek" közül melyik kerüljön kiválasztásra, ha egy másik szűrőt alkalmaz rájuk. Ez természetesen nem kötelező:

  • '$ldap_queries [ $query_id] [ 'userbase']: A felhasználói LDAP-keresés alap DN-je (csak az ennek az alapnak megfelelő felhasználójelölt) lesz kiválasztva;
  • '$ldap_queries [ $query_id] [ 'userscope']: A felhasználói LDAP keresés hatóköre (csak a felhasználói bázis+hatókörnek megfelelő felhasználójelölt) lesz kiválasztva;
  • '$ldap_queries [ $query_id] [ 'userfilter']: Ez egy szűrő, amely minden felhasználójelölt bejegyzésre vonatkozik (az attribútumaira), hogy újabb kijelölést adjon hozzá.

Kombinált csoportlekérdezések UID-tagokkal

Lássuk most, hogyan definiálhatunk kombinált csoportlekérdezést, ha a csoporttagok felhasználói UID-k és nem felhasználói DN-ek.

Ami a DN-tagokat tartalmazó csoportlekérdezéseket illeti, ezek a lekérdezések az első LDAP-keresést használják, amely megkeresi az LDAP-csoportok bejegyzéseit, és lekéri a tagokat. Ezeket a tagértékeket ezután a rendszer egy felhasználói keresési szűrőben használja a megfelelő bejegyzések keresésére. Így egy másik paramétert kell konfigurálni a felhasználói attribútum meghatározásához a felhasználó bejegyzésében, amelynek meg kell egyeznie a csoportokban található tag UID-vel.

Tekintsük át a szükséges paramétereket:

  • define $query_id, $ldap_queries [ $query_id] [ 'ldapServerId'], $ldap_queries [ $query_id] [ 'név'] a fentebb leírtak szerint

Ezután adja meg a csoportszűrő paramétereit:

  • '$ldap_queries [ $query_id] [ 'groupbase']: A gyökér DN, amelyből a csoportbejegyzések keresését el szeretné kezdeni;
  • '$ldap_queries [ $query_id] [ 'groupfilter']: Az LDAP szűrő, amely kiválasztja a lehetséges csoportbejegyzéseket;
  • '$ldap_queries [ $query_id] [ 'groupscope']: A csoportok LDAP-keresésének hatóköre ('on', 'base' vagy 'sub');
  • '$ldap_queries [ $query_id] [ 'groupmemberattr']: Az LDAP attribútum neve a csoportbejegyzésben, amely hivatkozásokat fog tartalmazni a felhasználók bejegyzéseire;
  • $ldap_queries [ $query_id] [ 'groupmemberisdn']:' HAMIS;
  • $ldap_queries [ $query_id] [ 'useridattr']:' a felhasználói attribútum neve, amelynek meg kell egyeznie a csoporttagokban található UID-vel.

Ezen a ponton minden úgy van beállítva, hogy az első LDAP-keresés megtalálja a kiválasztott csoportoknak megfelelő felhasználói UID-ket, és egy felhasználói keresési szűrő automatikusan kitöltésre kerül.

Korlátozhatja azonban, hogy ezek közül a „felhasználójelöltek” közül melyik kerüljön kiválasztásra a tagi UID-kből számított automatikus felhasználói szűrő kitöltésével. Ez természetesen nem kötelező:

  • '$ldap_queries [ $query_id] [ 'userbase']: A felhasználói LDAP-keresés alap DN-je (csak az ennek az alapnak megfelelő felhasználójelölt) lesz kiválasztva;
  • '$ldap_queries [ $query_id] [ 'userscope']: A felhasználói LDAP keresés hatóköre (csak a felhasználói bázis+hatókörnek megfelelő felhasználójelölt) lesz kiválasztva;
  • '$ldap_queries [ $query_id] [ 'userfilter']: Ez egy szűrő, amely minden felhasználójelölt bejegyzésre vonatkozik (az attribútumaira), hogy újabb kijelölést adjon hozzá.

Mi a helyzet az Active Directoryval?

Az Active Directory (AD) egy Microsoft rendszerleíró adatbázis, amely az LDAP protokoll használatával lekérdezhető.

Ezután felhasználható a LimeSurvey token lekérdezésekhez, de ehhez ismerni kell az AD rendszerezését.

  • Az LDAP gyökérbázisa dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1

==> Például, ha az Ön cége a „my-company.com” DNS-tartomány tulajdonosa, és a Windows tartománya az „alkalmazottak”, akkor az Ön gyökérbázisa dc=alkalmazottak,dc=my-company,dc=com

* A felhasználók és felhasználói csoportok a cn=Users,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1 alatt találhatók (kérjük, vegye figyelembe, hogy ez nem ou=users);
  • Active Directory csoportok:
    • Csoportok Az objektumok a tagok DN-jét tartalmazzák a 'member' attribútumban;
    • A csoporttagságok is tárolódnak az egyes felhasználói bejegyzések memberOf attribútumaiban. Ez az attribútum tartalmazza azon csoportok megkülönböztetett neveit, amelyekhez a felhasználó tartozik;
    • egyes csoportok a CN=Builtin,dc=my_windows_domain_name,dc=dns_suffix2,dc=dns_suffix1:
      • alatt találhatók. Például: cn=Adminisztrátor,CN =Beépített,dc=my_windows_domain_name,dc=dns_utótag2,dc=dns_utótag1;

Egyes esetekben nem olyan egyszerű lekérdezni egy aktív könyvtárat, ezért itt van egy példa konfigurációs információ az aktív könyvtárról:

//Kapcsolódás az aktív könyvtárhoz Szerver:
$serverId=0;
$ldap_server[$serverId]['server'] = "10.10.10.10";
$ldap_server[$serverId] ['port'] = "389";
$ldap_server[$serverId]['protoversion'] = "ldapv2";
$ldap_server[$serverId]['encrypt'] = "nincs"; // A legtöbb AD LDAP szerveren alapértelmezés szerint nincs titkosítás beállítva
$ldap_server[$serverId]['referrals'] = false;
$ldap_server[$serverId]['binddn'] = "domain\\felhasználó ";
$ldap_server[$serverId]['bindpw'] = "felhasználói jelszó";
//$ldap_server[$serverId]['binddn'] = "CN=felhasználó,OU=felhasználói_csoport,DC=xxx ,DC=ééé"; ez nem fog működni aktív könyvtárral, ezért kell a "domain\\user"-t használni
//Itt van egy mintalekérdezés egy aktív könyvtár összes aktív felhasználójának lekérdezéséhez:
$query_id=0 ;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ldap_queries[$query_id]['name'] = 'Engedélyezett fiókkal rendelkező alkalmazottak';
$ldap_queries[$query_id] ['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyy';
$ldap_queries[$query_id]['userfilter'] = '(&(objectClass=user)(!(userAccountControl=514) ))';
//(!(userAccountControl=514)) aktív felhasználóhoz nem kérdezhet aktív könyvtárat, de nem inaktív felhasználóhoz igen
$ldap_queries[$query_id][ 'userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'adott név';
$ldap_queries[$query_id]['lastname_attr'] = 'sn';
 $ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = '; // Hagyja üresen az automatikus token generálásához phpsv által
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ ldap_queries[$query_id]['attr2'] = '';
//A csoportszűrés nem volt lehetséges az aktív könyvtárban, hozzá kell adni egy felhasználó memberOf attribútumait. Íme egy példalekérdezés az összes aktív felhasználónak, aki a "samplegroup" csoport tagja az aktív könyvtárban:
$query_id++;
$ldap_queries[$query_id]['ldapServerId'] = 0;
$ ldap_queries[$query_id]['name'] = 'A mintacsoport összes tagja';
$ldap_queries[$query_id]['userbase'] = 'OU=USER_GROUP,DC=xxx,DC=yyyy';
 $ldap_queries[$query_id]['userfilter'] = '(&(objectClass=felhasználó)(memberOf=CN=mintacsoport,OU=Globális csoport,OU=USER_GROUP,DC=xxx,DC=yyyy)(!(userAccountControl=514) ))';
$ldap_queries[$query_id]['userscope'] = 'sub';
$ldap_queries[$query_id]['firstname_attr'] = 'adott név';
$ldap_queries[$ query_id]['lastname_attr'] = 'sn';
$ldap_queries[$query_id]['email_attr'] = 'mail';
$ldap_queries[$query_id]['token_attr'] = '; // Hagyja üresen az automatikus token generálásához phpsv által
$ldap_queries[$query_id]['language'] = '';
$ldap_queries[$query_id]['attr1'] = '';
$ ldap_queries[$query_id]['attr2'] = '';

Egy másik példa Felhasználói lekérdezés:

 
$ldap_queries[$query_id]['userfilter'] = '(&('''objectCategory=Személy''')(objectClass='''user''')(!('''userAccountControl=514' '')))'; // Az AD a normál módon nem ismeri fel az engedélyezett fiókokat, ezért ehelyett ellenőrizzük, hogy a felhasználók nincsenek letiltva
  • A konfigurációs fájlban javasoltak szerint fontolja meg (!(email=*)) hozzáadását a felhasználói szűrőihez, hogy figyelmen kívül hagyja az e-mail címmel nem rendelkező felhasználókat.

Példa csoportos lekérdezésre:

$ldap_queries[$query_id]['groupfilter'] = '(&(objectClass='''group''')(cn=Domain Admins))'; // Az AD nem használja a szabványos attribútumnevet a csoportokhoz, ezért használja inkább ezt a példát.

Az Active Directory LDAP-struktúrájáról a Active Directory Architecture és a webhelyeken talál további információt. library/cc223122.aspx Active Directory műszaki specifikációja.