kanguruh
Goto Top

LDAP Userinformationen z.B. mail

Bind per LDAP am ADS funktioniert, wie kann ich die mail Adresse auslesen

Hallo,

die Anmeldung am ADS per LDAP funktioniert:

   $ldapserver = 'server';  
   $ds=ldap_connect($ldapserver);
   if ($ds) {
		$dn="user@domain";  

		$r=ldap_bind($ds,$dn,"passwort");  

		if ($r) {
			echo "jut";  
                  } else  {
			echo "nich jut";  
		}
	}

Ich bekomme also "jut" ausgegeben.

Wie kann ich die Mailadresse des Users ermitteln, der zur Authentifizierung am Server mit bind benutzt wurde?

Content-Key: 136404

Url: https://administrator.de/contentid/136404

Printed on: April 23, 2024 at 11:04 o'clock

Member: kanguruh
kanguruh Feb 24, 2010 at 13:34:26 (UTC)
Goto Top
Ich habs selbst lösen können:

if(isset($_POST["user"]) && isset($_POST["pass"])) {  
	$ldapserver = '**********';  
	$ldap_connect=ldap_connect($ldapserver);
	ldap_set_option($ldap_connect, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set ldap protocol");  
	ldap_set_option($ldap_connect, LDAP_OPT_REFERRALS, 0);

	if ($ldap_connect) {
		$user = $_POST["user"];  
		$base_dn="DC=**********,DC=**********,DC=**********";  
		$r=ldap_bind($ldap_connect,$user."@**********(Domain)",$_POST["pass"]);  
		if ($r) {
			$filter = "objectclass=user";  
			$attrb = array("samaccountname", "mail");  
			$ldap_search = ldap_search($ldap_connect, $base_dn, $filter, $attrb) or die ("Could not search!");  
			$ldap_result = ldap_get_entries($ldap_connect, $ldap_search);
			$email = "";  
			foreach ($ldap_result AS $key => $ldap_value) {
				if($ldap_value["samaccountname"] == $user) {  
					$email = $ldap_value["mail"];  
					break;
				}
			}
        } else  {
			die ("Could not bind to LDAP Server");  
		}
	} else {
		die ("Could not connect to LDAP Server");  
	}
	ldap_close($ldap_connect);
	// Weiterleiten
	session_start();
	$_SESSION['email'] = $email;  
	Header("Location: **********.php?".SID);  
}

Die Lösung ist abhängig von der ADS-Strucktur.