Zum Inhalt wechseln


Foto

PHP Active Directory auf IIS8.5


  • Bitte melde dich an um zu Antworten
2 Antworten in diesem Thema

#1 Matze1708

Matze1708

    Member

  • 381 Beiträge

 

Geschrieben 20. Dezember 2016 - 09:45

Guten Tag,

 

ich fummel schon seit einiger Zeit an einem Thema rum.

 

Ich habe ein Skript Welches mir aus unserer Telefonanlage diverse Dinge ausliest. Das wird per PHP gemacht. Dafür habe ich von der IT einen WinSrv2012 R" mit PHP 7.XX und dem IIS 8.5 bekommen.

 

Zugangsdaten für den LDAP Server etc habe ich auch bekommen.

 

Folgendes möchte ich realisieren:

 

Ein user darf die Seite für die Telefonanlage nur öffnen wenn dieser in einer Gruppe XY im AD ist zusätzlich möchte ich aber noch ein Attribut aus dem AD auslesen.

 

Ich hänge aber jetzt schon am kleinsten Teil.

 

Ich bekomme nicht anständig eine Verbinung bzw ein BIND zusammen.

 

Ich habe dieses Beispiel hier verwendet:

 

http://www.serverhow...agen.356.0.html

 

Ich habe natürlich die Zugangsdaten vom LADP Server sowie die Adresse und die Search Basis eingestellt. Habe das auf eine OU eingegrenzt, damit ich im Test nicht ewig warten muss.

 

ABER ich bekomme solche Meldungen hier:

 

 

PHP Notice: Undefined index: givenname in C:\websites\SaSViewer\ldap\erstes_beispiel.php on line 47 PHP Notice: Undefined index: sn in C:\websites\SaSViewer\ldap\erstes_beispiel.php on line 48 PHP Notice: Undefined index: mail in C:\websites\SaSViewer\ldap\erstes_beispiel.php on line 49

 

Könnt Ihr mir dabei helfen? Ich sag mal wenn das grobe geht. Den Rest bekomme ich bestimmt irgendwie hingefummelt.

 

Vielen Lieben Dank

 

Gruß Matthias

 


Hallo,

 

nur mal als Beispiel:

 

Hier bekomme ich trotz Error Reporting den 500 Fehler.

 

 

In der PHP.ini ist LDAP aktiv!

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1)

function get_groups($user) {
	// Active Directory server
	$ldap_host = "LDAPSRV.gruppe.intra";

	// Active Directory DN, base path for our querying user
	$ldap_dn = "OU=Standort,OU=Firma,DC=gruppe,DC=intra";

	// Active Directory user for querying
	$query_user = "user@gruppe.intra";//.$ldap_host;
	$password = "XXXX";

	// Connect to AD
	$ldap = ldap_connect($ldap_host) or die("Could not connect to LDAP");
	ldap_bind($ldap,$query_user,$password) or die("Could not bind to LDAP");

	// Search AD
	$results = ldap_search($ldap,$ldap_dn,"(samaccountname=$user)",array("memberof","primarygroupid"));
	$entries = ldap_get_entries($ldap, $results);
	
	// No information found, bad user
	if($entries['count'] == 0) return false;
	
	// Get groups and primary group token
	$output = $entries[0]['memberof'];
	$token = $entries[0]['primarygroupid'][0];
	
	// Remove extraneous first entry
	array_shift($output);
	
	// We need to look up the primary group, get list of all groups
	$results2 = ldap_search($ldap,$ldap_dn,"(objectcategory=group)",array("distinguishedname","primarygrouptoken"));
	$entries2 = ldap_get_entries($ldap, $results2);
	
	// Remove extraneous first entry
	array_shift($entries2);
	
	// Loop through and find group with a matching primary group token
	foreach($entries2 as $e) {
		if($e['primarygrouptoken'][0] == $token) {
			// Primary group found, add it to output array
			$output[] = $e['distinguishedname'][0];
			// Break loop
			break;
		}
	}

	return $output;
}

// Example Usage
print_r(get_groups("Jane"));

?>


#2 blub

blub

    Moderator

  • 7.600 Beiträge

 

Geschrieben 23. Dezember 2016 - 07:43

Kannst du mal mit LDP die Bindung versuchen

https://technet.micr...0(v=ws.11).aspx

 

Dann siehst du schonmal, ob die Infrastruktur funktioniert, oder es an der Syntax liegt.

PHP kenne ich leider nicht besonders gut.


Ein Kluger bemerkt alles, Ein Dummer macht über alles eine Bemerkung. (Heinrich Heine)


#3 Matze1708

Matze1708

    Member

  • 381 Beiträge

 

Geschrieben 03. Januar 2017 - 09:14

Hallo,

 

ich greife das Thema noch mal auf.

 

Also per LDP klappt es ohne Probleme.