5. 1. De nities
2. Gebruik in php
3. Opbouw lterstring
4. Nog iets?
6. Directory
• Soort database met gegevens in een boomstructuur
• Vergelijkbaar met folderstructuur op een opslagmedium
• Geen vaste structuurregels
• Voorafgaande kennis van de serveropbouw noodzakelijk
7. Bekend(st)e voorbeelden:
‣ Microsoft Active Directory
‣ Apache Directory Server
‣ OpenLDAP
‣ Red Hat Directory Server
‣ IBM Tivoli Directory Server
9. dn • cn=John Smith,ou=Accounts,o=Netlash-bSeen,c=BE
• cn=John Smith,ou=Users,dc=ncube,dc=be
• c = country
• o = organization
• dc = domainComponent
• ou = organizationUnit
• cn = commonName
10. 1. De nities
2. Gebruik in php
3. Opbouw lterstring
4. Nog iets?
11. // maak connectie met de server
$connection = ldap_connect($hostname, $port = 389); //636 voor SSL
// de nieer de protocol versie
ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
// login (anoniem) meestal enkel read only access
ldap_bind($connection);
// login (met authenticatie)
$userDn = "cn=apache Mod_ldap Search,ou=Service Accounts,ou=COMMON,dc=ncube,dc=be";
ldap_bind($connection, $userDn, $password);
/* acties */
// uitloggen
ldap_close($connection);
12. /**
* acties
**/
// niveau waarop gestart wordt met zoeken
$baseDn = "ou=Users,dc=ncube,dc=be";
// attribuutnamen waarop kan worden gezocht (goede ltering op minder velden = betere performantie)
$attributeArray = array(‘samaccountname’, ‘givenname’, ‘telephonenumber’, ‘mobile’, ‘mail’, ‘info’);
//limit, aantal resultaten die moet worden opgehaald
$limit = 0; // 0 haalt alles op
// attribuut waarop de resultaten worden gesorteerd
$sortAttribute = ‘samaccountname’;
// lees de data in
$readData = ldap_search($connection, $baseDn, $ lter, $attributeArray, 0, $limit);
// aantal resultaten
$numResults = ldap_count_entries($connection, $readData);
// sorteer de ingelezen resultaten
ldap_sort($connection, $readData, $sortAttribute);
// haal de data op
$info = ldap_get_entries($connection, $readData);
13. 1. De nities
2. Gebruik in php
3. Opbouw lterstring
4. Nog iets?
19. Attributen zijn vast gede nieerd maar kunnen een
andere bestemming krijgen.
vb:
- “physicalDeliveryOf ceName” als subdepartement
binnen een bedrijf
- “postOf ceBox” als departementscode
- “info” als multi-value veld (bij voorkeur 1 value/lijn)
20. Wachtwoorden van de users binnen de Active
Directory zijn niet (zo maar) te achterhalen.
21. Hoe checken via LDAP of een user toegang heeft?
$connection = ldap_connect($hostname, $port = 389);
ldap_set_option($connection, LDAP_OPT_PROTOCOL_VERSION, 3);
if( ldap_bind($connection, 'cn=' . $_SERVER['PHP_AUTH_USER'] . ',' . $baseDn, $_SERVER['PHP_AUTH_PW']))
{
echo 'The user is valid';
}
else
{
echo 'Invalid user';
}