Connecteren met Active Directory

In dit hoofdstuk wordt uitgelegd hoe je een connectie met Active Directory middels het LDAP protocol tot stand brengt.

Voordat je een connectie gaat opzetten zijn er een aantal zaken die je moet weten voordat je verder gaat. Deze zijn hieronder weergegeven:

Hostname van je server:
De hostname kan op drie verschillende manier worden gedefinieerd:

- Naam van je server
- Webadres
- Intern of extern IPadres

Poortnummer:
Nu de hostname is gedefinieerd is alleen het poortnummer nog van belang. Standaard draait een LDAP server op poort 389, vandaar dat het poortnummer ook optioneel is. Maar omdat we niets willen uitsluiten definiëren we ook het poortnummer. Wanneer je LDAP over SSL draait is het standaard poortnummer 636.

Bestudeer onderstaand code snippet om te zien hoe het bovenstaande er in PHP uit ziet:
 

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
// Even wat configuratie
$config = array(
    'hostname'        =>    'nielskieviet.local',
    'portnumber'        =>      389,
    'sslPortnumber'            =>    636
);

/**
 * Verbinding zonder SSL
 */

$ldapConnection = ldap_connect($config['hostname'], $config['portnumber']); // 'Portnumber' is optioneel maar voor de zekerheid gewoon configureren.
if (!$ldapConnection) {
    // Er is een fout opgetreden bij het connecteren van de LDAP server
    trigger_error('Er is een fout opgetreden bij het connecteren van de LDAP server. Error: `' .ldap_error($ldapConnection). '`');
    exit;
}


/**
 * Verbinding met SSL
 */

$sslLdapConnection = ldap_connect('ldaps://' .$config['hostname'], $config['sslPortnumber']); // 'Portnumber' verschilt, plus ldaps:// is toegevoegd
if (!$sslLdapConnection) {
    // Er is een fout opgetreden bij het connecteren van de LDAP server
    trigger_error('Er is een fout opgetreden bij het connecteren van de LDAP server. Error: `' .ldap_error($sslLdapConnection). '`');
    exit;
}

?>


Zoals ik al vertelde, zeer éénvoudig. Er is echter één maar bij. Wanneer je OpenLDAP versie 2 draait retourneert "ldap_connect" altijd een resource. Het if - statement is dan overbodig. (Je krijgt wel een error, maar je kan dus niet specifiek een eigen foutmelding plaatsen, of je moet een eigen error handler gaan gebruiken)

Voordat je verder gaat is het belangrijk om je LDAP connectie juist te configureren. Dit omdat de configuratie bepaald welke functionaliteiten je wel of niet kunt gebruiken. Voor het configureren van je LDAP kan je de functie ldap_set_option gebruiken. Zie ook onderstaand voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Zoals al eerder verteld is versie 3 de meeste recente versie van LDAP, deze configureren
if (!ldap_set_option($ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    trigger_error('Protocol versie 3 kan niet worden geconfigureerd');
    exit;
}


// Referenties
if (!ldap_set_option($ldapConnection, LDAP_OPT_REFERRALS, 0)) {
    trigger_error('Referenties kunnen niet worden geconfigureerd');
    exit;
}

?>


Wanneer je LDAP over SSL draait ben je verplicht om gebruik te maken van TLS. Dit is simpel aan te geven middels de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
// LDAP over SSL / LTS
if (!ldap_start_tls($ldapConnection)) {
    trigger_error('LDAP over SSL kan niet worden ingeschakeld.');
    exit;
}

?>


LET OP: Wanneer je gebruik maakt van de TLS functionaliteit is LDAP versie 3 vereist!

Zo ben je alweer aan het eind gekomen van dit hoofdstuk. Ik hoop dat je er wat van geleerd hebt, en wanneer je vragen en / of problemen hebt met bovenstaande informatie, schroom je niet om ze te stellen.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Wat is Active Directory en wat houd het in?
  2. LDAP protocol plus verschillende mogelijkheden.
  3. Connecteren met Active Directory
  4. Authenticatie en Active Directory
  5. Gebruikersmanagement (1)

PHP tutorial opties

 
 

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