Authenticatie en Active Directory
Dit hoofdstuk gaat over het authenticeren met Active Directory middels het LDAP protocol. In het begin van dit hoofdstuk worden de belangrijkste aandachtspunten opgenoemd en uitgelegd. Aan de hand daarvan wordt middels wat code uitgelegd hoe je nu precies een Active Directory authenticatie realiseert.
Voor het authenticeren met Active Directory zijn een aantal zaken van belang. Deze zijn hieronder weergeven:
- Connectie met de Active Directory server middels het LDAP protocol.
- Gebruikersnaam en wachtwoord.
- Domein gegevens.
Elke authenticatie, op welke manier dan ook, verwacht een identity (identiteit) en een credential (referenties). Wanneer je gaat authenticeren met Active Directory is dit niet anders. Echter heb je bij deze authenticatie ook nog wat extra informatie nodig, genaamd "account suffix". De "account suffix" is je volledige domeinnaam, dus met je domein extensie. Voorbeeld: "nielskieviet.local". Vind je domeinnaam als volgt:
Zoals het woord al zegt komt de 'account suffix' achter je accountnaam (gebruikersnaam) te staan. Dit is nodig om te verifiëren bij welk domein het account geauthenticeerd moet worden.
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
29
30
31
32
33
/**
* LET OP! Ik ga hier al vanuit dat de connectie is gelegd en dat de juiste instellingen
* zijn geconfigureerd! Lees het vorige artikel nogmaals om te kijken hoe er connectie
* kan worden gelegd en hoe de instellingen worden geconfigureerd.
*/
$config = array(
'username' => 'niels',
'password' => 'kieviet',
'accountSuffix' => '@nielskieviet.local'
);
if (!authenticate($ldapConnection, $config['username'], $config['password'], $config['accountSuffix'])) {
// Gebruiker is niet geauthenticeerd..
trigger_error('Gebruiker kon niet worden geauthenticeerd. Error: ' .ldap_error($ldapConnection));
exit;
}
/**
* Functie voor het authenticeren van een gebruiker
*
* @param Mixed $ldapConnection
* @param String $username
* @param String $password
* @param String $accountSuffix
*/
function authenticate($ldapConnection, $username, $password, $accountSuffix)
{
return (false !== ldap_bind($ldapConnection, $username . $accountSuffix, $password));
}
?>
Zoals je ziet, is het zeer eenvoudig, er is gebruik gemaakt van de functie "authenticate" die een "ldap_bind" tot stand probeert te brengen, aan de hand van je gebruikersnaam, "accountsuffix" en je wachtwoord. Aan de hand van het resultaat van de poging wordt er een boolean geretourneerd, wat kan leiden tot het verder uitvoeren van de applicatie, of tot het tonen van de foutmelding dat de gebruiker niet kon worden geauthenticeerd.
Wat ook mogelijk is, is het genereren van een Single Sign On (SSO) middels het Kerberos protocol. Aangezien dat zelf al een hoofdstuk waard is wordt dit in een later stadium behandeld.
Tot slot, er zijn nog een aantal zaken waarmee je rekening moet houden wanneer je dit gebruikt:
- Zorg ervoor dat de LDAP connectie aanwezig, en juist geconfigureerd is. (Zie ook het vorige hoofdstuk)
- Dit script zorgt niet voor een formulier of de validatie daarvan, zorg daar dus zelf voor.
Het volgende hoofdstuk wordt een stuk spannender! Daarin wordt uitgelegd hoe je nu precies data kan ophalen en kan wegschrijven.
Inhoudsopgave
- Wat is Active Directory en wat houd het in?
- LDAP protocol plus verschillende mogelijkheden.
- Connecteren met Active Directory
- Authenticatie en Active Directory
- Gebruikersmanagement (1)