Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ldap Zugriff auf Active directory um einen neuen Account zu erstellen mit php Script

Frage Entwicklung PHP

Mitglied: Fussel01

Fussel01 (Level 1) - Jetzt verbinden

10.04.2011, aktualisiert 15:26 Uhr, 5478 Aufrufe, 19 Kommentare

Hallo,
Weiß nicht ob ich das hier oder im php Bereich erstellen sollte. Naja.
Meine Daten
Windows Server 2008
Active Directory installiert
IIS 7.0 auch installiert

So nun zu meinem Problem,
Ich möchte auf meiner hp die über dyndns über meinen Server läuft ein Login-System einbauen, dies soll aus dem Login-Bereich und dem Regestrieungsbereich bestehen.
Zum Login habe ich bereits mehrer Beispiel Scripts mit php gefunden.
Aber wie sieht der php Script aus der für die regestrieung eines neuen Accounts aus. Dieser Account soll ein ganz normaler Benutzer sein, der sich dann auch in der Domäne anmelden kann.
Hoffe mir kann einer ein Beispiel geben.

Mit freundlichen Grüßen

Fussel
Mitglied: 60730
10.04.2011 um 15:32 Uhr
moin,

da in deinen Daten keine Firewall oder ein VPN genannt wurde....


Hoffe mir kann einer ein Beispiel geben.

php, windows und Konsorten sind per anno unsicher und ich vermute, dir wird hier keiner ein Tool zusammenzimmern, dass eine so gefährliche Nummer, wie es nunmal das anlegen eines AD Users via php ist.

Besorg dir ein Firewall, bau dir einen VPN Tunnel und mach das ohne PHP.....

Gruß
Bitte warten ..
Mitglied: dog
10.04.2011 um 15:51 Uhr
Was soll daran gefährlich sein, dass via PHP zu machen?
Ich habe auch schon Massenimports mit PHP gemacht, das ist ja nichts anderes als was Microsoft bei seinen LDAP-VBScripts auch zeigt.
Geht problemlos wenn man eine verschlüsselte LDAP-Verbindung hat.

Und ich glaube eher der TO meint, dass seine Website auf dem AD-Server liegt.
Bitte warten ..
Mitglied: Fussel01
10.04.2011 um 15:57 Uhr
Danke für eure Antworten.
Ja ich habe eine VPN-Verbindung eingerichtet.
Ich dachte es so: also du hast du hast keinen Account klickst auf registrieren und dann fragt er nach Name vorname Passwort usw.
Diese neue Account wird dann Active Directory erstellt
Hoffe ihr versteht was ich meine

Mit freundlichen Grüßen

Fussel

Achso: Server sitzt mit zwei Firewalls hinter einem Router
Bitte warten ..
Mitglied: richardfrick
11.04.2011 um 07:56 Uhr
Guten Morgen,

Mit google findest Du einige Klassen, die das AD via LDAP ansteuern lässt.

Falls Du Dich etwas tiefer damit beschäftigen willst (und auch mit dem Konsumieren von Exchange-Services, usw.) kann ich Dir von Microsoft Press "PHP programmieren unter Windows" empfehlen.
Bitte warten ..
Mitglied: Fussel01
11.04.2011 um 08:01 Uhr
Habe schon gegoogelt und immer nur was um Login aber nichts zum erstellen neuer Benutzer gefunden.trotzdem danke
Mit freundlichen Grüßen
Fussel
Bitte warten ..
Mitglied: richardfrick
11.04.2011 um 09:13 Uhr
http://sourceforge.net/projects/adldap/

Nach dem Download schau' Dir examples.php an, dort siehst Du ein Beispiel, wie Du Benutzer eröffnest, zu Gruppen hinzufügst, etc.
Bitte warten ..
Mitglied: Fussel01
11.04.2011 um 14:53 Uhr
Vielen,vielen Dank erstmal.
Eine Frage habe ich noch man muss doch jetzt den Script teil rauskopieren und eine neue php Datei erstellen.
Dann muss man noch eine Tabelle erstellen und dann include(,oder?
Aber wie macht man es das die php-Datei die Felder erkennt ?

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: richardfrick
11.04.2011 um 15:07 Uhr
Ja, klasse mit include laden, instantiieren ($adldap = new adLDAP($options);) und dann den Benutzer eröffnen.

Das Stichwort für "Felder erkennen" nennt sich in HTML-Formular.
http://de.selfhtml.org/html/formulare/eingabe.htm
http://php.net/manual/de/tutorial.forms.php
Bitte warten ..
Mitglied: Fussel01
11.04.2011 um 19:07 Uhr
Habe eig. alles verstanden.
Doch zur Sicherheit :
Man lädt welche php-datei in die html mit dem formular ?
Und was bedeutet die instantiieren ($adldap = new adLDAP($options) Option ?

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: richardfrick
12.04.2011 um 08:23 Uhr
Also, ohne wirkliche PHP-Erfahrung würde ich das so machen:

index.html
form mit den frei zu wählenden Daten (Name, Passwort, usw.).
form mittels POST auf addADUser.php zeigen

addADUser.php:
Klasse includen, und dann instantiieren.
Du musst Dir das so vorstellen: Du gehst in eine Bibliothek und nimmst es zu Dir (include).
Nun legst Du es auf den Tisch, um damit arbeiten zu können (das wäre übersetzt das instantiieren. Du lädst die Klasse in eine Variable, von welcher Du die Methoden abrufen kannst).

Du kannst hierbei eigentlich alles von examples.php rauskopieren, wichtig ist:
Bei den Attributen-Array ($attributes) für user_create musst Du die Werte ändern, entweder mit Konstante (also feste Werte, zum Beispiel wenn alle Benutzer bei der Erstellung des Accounts das gleiche Standard-Passwort haben sollte), oder eben mit den Werten des Formulars (z.B. $attributes["surname"] = $_POST["nachname"];)


ACHTUNG:
Du hast hier absolut keine Sicherheitsmechanismen eingebaut, es ist daher wichtig, dass unter keinen Umständen ein Dritter dieses Script (auf Deinem Server) benutzen kann.
Bitte warten ..
Mitglied: yannick-server
12.04.2011 um 09:17 Uhr
Schau dir mal LiveUser an. Ist eine Pear Klasse für PHP und ermöglicht die Authentifikation über Samba, POP3... vielleicht ist auch was für Windows dabei. Ob man darüber Benutzer anlegen kann weiß ich nicht ist aber vielleicht als Grundlage zu gebrauchen. Habe es selber noch nicht verwendet, nur mal irgentwo gelesen Viel Glück!
Bitte warten ..
Mitglied: Fussel01
12.04.2011 um 18:32 Uhr
OK erstmal danke für deine Mühe.
Wahrscheinlich bin ich einfach zu dumm.
Es geht nicht so wie es soll. Es die php datei wird zwar ausgeführt, aber es entsteht kein neuer benutzer.
Deswegen schreibe ich mal wie bei mir die addADUser.php aussieht:
01.
<? 
02.
/* 
03.
Examples file 
04.
 
05.
To test any of the functions, just change the 0 to a 1. 
06.
*/ 
07.
 
08.
//error_reporting(E_ALL ^ E_NOTICE); 
09.
 
10.
include ("../adLDAP.php"); 
11.
try { 
12.
    $adldap = new adLDAP($options); 
13.
14.
catch (adLDAPException $e) { 
15.
    echo $e; exit();    
16.
17.
//var_dump($ldap); 
18.
 
19.
echo ("<pre>\n"); 
20.
 
21.
if (1){ 
22.
	$attributes=array
23.
		"username" = "fred"
24.
		"logon_name"= "freds@mydomain.local"
25.
		"firstname"= "Fred"
26.
		"surname" = $_POST["nachname"], 
27.
		"company"= "Benni"
28.
		"email"= "$_POST["username"]@domain.de"
29.
		"container"= array("Container Parent","Container Child"), 
30.
		"enabled"= 1, 
31.
		"password"= "Password123"
32.
	); 
33.
	 
34.
  try { 
35.
    	$result=$ldap->user_create($attributes); 
36.
	    var_dump($result); 
37.
38.
        catch (adLDAPException $e) { 
39.
        echo $e;     exit();    
40.
41.
42.
 
43.
?>
Habe extra es noch nicht mit einer eingabe gemacht! Da ich einen festen Wert testen wollte.
Natürlich auch der adldap-code, aber nur der Anfang
01.
?php 
02.
/** 
03.
 * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY  
04.
 * Version 3.3.2 
05.
 *  
06.
 * PHP Version 5 with SSL and LDAP support 
07.
 *  
08.
 * Written by Scott Barnett, Richard Hyland 
09.
 *   email: scott@wiggumworld.com, adldap@richardhyland.com 
10.
 *   http://adldap.sourceforge.net/ 
11.
 *  
12.
 * Copyright (c) 2006-2010 Scott Barnett, Richard Hyland 
13.
 *  
14.
 * We'd appreciate any improvements or additions to be submitted back 
15.
 * to benefit the entire community :) 
16.
 *  
17.
 * This library is free software; you can redistribute it and/or 
18.
 * modify it under the terms of the GNU Lesser General Public 
19.
 * License as published by the Free Software Foundation; either 
20.
 * version 2.1 of the License. 
21.
 *  
22.
 * This library is distributed in the hope that it will be useful, 
23.
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
24.
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
25.
 * Lesser General Public License for more details. 
26.
 *  
27.
 * @category ToolsAndUtilities 
28.
 * @package adLDAP 
29.
 * @author Scott Barnett, Richard Hyland 
30.
 * @copyright (c) 2006-2010 Scott Barnett, Richard Hyland 
31.
 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1 
32.
 * @revision $Revision: 91 $ 
33.
 * @version 3.3.2 
34.
 * @link http://adldap.sourceforge.net/ 
35.
 */ 
36.
 
37.
/** 
38.
 * Define the different types of account in AD 
39.
 */ 
40.
define ('ADLDAP_NORMAL_ACCOUNT', 805306368); 
41.
define ('ADLDAP_WORKSTATION_TRUST', 805306369); 
42.
define ('ADLDAP_INTERDOMAIN_TRUST', 805306370); 
43.
define ('ADLDAP_SECURITY_GLOBAL_GROUP', 268435456); 
44.
define ('ADLDAP_DISTRIBUTION_GROUP', 268435457); 
45.
define ('ADLDAP_SECURITY_LOCAL_GROUP', 536870912); 
46.
define ('ADLDAP_DISTRIBUTION_LOCAL_GROUP', 536870913); 
47.
define ('ADLDAP_FOLDER', 'ldap://localhost'); 
48.
define ('ADLDAP_CONTAINER', 'Users'); 
49.
 
50.
/** 
51.
* Main adLDAP class 
52.
*  
53.
* Can be initialised using $adldap = new adLDAP(); 
54.
*  
55.
* Something to keep in mind is that Active Directory is a permissions 
56.
* based directory. If you bind as a domain user, you can't fetch as 
57.
* much information on other users as you could as a domain admin. 
58.
*  
59.
* Before asking questions, please read the Documentation at 
60.
* http://adldap.sourceforge.net/wiki/doku.php?id=api 
61.
*/ 
62.
class adLDAP { 
63.
    /** 
64.
    * The account suffix for your domain, can be set when the class is invoked 
65.
    *  
66.
    * @var string 
67.
    */    
68.
	protected $_account_suffix = "@ben-server.dyndns.org"
69.
     
70.
    /** 
71.
    * The base dn for your domain 
72.
    *  
73.
    * @var string 
74.
    */ 
75.
	protected $_base_dn = "DC=benni,DC=de";  
76.
	 
77.
    /** 
78.
    * Array of domain controllers. Specifiy multiple controllers if you 
79.
    * would like the class to balance the LDAP queries amongst multiple servers 
80.
    *  
81.
    * @var array 
82.
    */ 
83.
    protected $_domain_controllers = array ("win-pxwzhli6ijn.benni.de"); 
84.
	 
85.
    /** 
86.
    * Optional account with higher privileges for searching 
87.
    * This should be set to a domain admin account 
88.
    *  
89.
    * @var string 
90.
    * @var string 
91.
    */ 
92.
	protected $_ad_username=NULL; 
93.
    protected $_ad_password=NULL; 
94.
     
95.
    /** 
96.
    * AD does not return the primary group. http://support.microsoft.com/?kbid=321360 
97.
    * This tweak will resolve the real primary group.  
98.
    * Setting to false will fudge "Domain Users" and is much faster. Keep in mind though that if 
99.
    * someone's primary group is NOT domain users, this is obviously going to mess up the results 
100.
    *  
101.
    * @var bool 
102.
    */ 
103.
	protected $_real_primarygroup=true; 
104.
	 
105.
    /** 
106.
    * Use SSL (LDAPS), your server needs to be setup, please see 
107.
    * http://adldap.sourceforge.net/wiki/doku.php?id=ldap_over_ssl 
108.
    *  
109.
    * @var bool 
110.
    */ 
111.
	protected $_use_ssl=false; 
112.
     
113.
    /** 
114.
    * Use TLS 
115.
    * If you wish to use TLS you should ensure that $_use_ssl is set to false and vice-versa 
116.
    *  
117.
    * @var bool 
118.
    */ 
119.
    protected $_use_tls=false; 
120.
     
121.
    /** 
122.
    * When querying group memberships, do it recursively  
123.
    * eg. User Fred is a member of Group A, which is a member of Group B, which is a member of Group C 
124.
    * user_ingroup("Fred","C") will returns true with this option turned on, false if turned off      
125.
    *  
126.
    * @var bool 
127.
    */ 
128.
	protected $_recursive_groups=true; 
129.
	 
130.
	// You should not need to edit anything below this line
Hoffe es hilft Ihnen etwas

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: dog
12.04.2011 um 19:21 Uhr
Ich sehe an keiner Stelle, dass du eine Bindung an das AD mit Administratorzugangsdaten machst.
Zudem willst du ein Passwort setzen und das lässt AD nur über SSL zu.
Bitte warten ..
Mitglied: Fussel01
12.04.2011 um 21:16 Uhr
Ja das klingt einleuchtend !
Es tut mir echt Leid ,aber ich kann nur html und kein php. Deswegen wäre jemand so freundlich, dass er mir den Code oben so ändert.
Tausend Dank wenn das jemand macht !

Hatte noch so eine andere Idee
Man könnte den user im MySQL datenbank erstellen und dies sollte sich um 00:00 immer abgleichen.
Geht das?

Mit freundlichen Grüßen

Fussel

So habe nach dem ich nach meiner Idee gegoogelt hatte endlich viel gefunden.
Hier ein Link http://de.php.net/manual/de/function.ldap-bind.php
Dort ist eine Bindung mit dem Server erklärt. Will diese mit dem Include heute einbinden

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: richardfrick
13.04.2011 um 11:10 Uhr
gude,

Also, folgendes:
Der "Benutzer", der php.exe initialisiert, muss sicher mal Domänen-Admin sein.

Packe nun erstmal die Datei "adLDAP.php" in den gleichen Ordner wie "addADUser.php".
Ändere die Zeile "include ("../adLDAP.php"); " durch "include ("adLDAP.php");


Natürlich könntest Du auch die ganzen User in eine MySQL-Tabelle packen und dann per Task-Scheduler auslesen, aber was wäre der Vorteil?
Bitte warten ..
Mitglied: dog
13.04.2011 um 12:24 Uhr
Der "Benutzer", der php.exe initialisiert, muss sicher mal Domänen-Admin sein.

PHP verbindet sich explizit über LDAP, das hat nichts damit zu tun auf welchem Server und unter welchem Benutzer es läuft.
Bitte warten ..
Mitglied: Fussel01
13.04.2011 um 12:31 Uhr
Habe jetzt einen apache server dann kommt
Warning: ldap_add() [function.ldap-add]: Add: Server is unwilling to perform in F:\xampp\htdocs\aduser.php on line 43

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: Fussel01
14.04.2011 um 09:58 Uhr
Verbessert mich fals ich falsch liege :

man verbinden sich mit
ldap_connect
dann binden man mit
ldap_bind
das klappt ja aber dann
ldap_add

Kann mir einer bitte den genauen Aufbau von ldap_add erklären.

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Mitglied: Fussel01
16.04.2011 um 18:54 Uhr
So habe es jetzt hinbekommen mit vbs und php,
vielen Dank an euch

Mit freundlichen Grüßen

Fussel
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
gelöst Active Directory CA öffentlich vertrauenswürdig machen, geht das? (2)

Frage von DeathangelCH zum Thema Windows Server ...

Windows Server
gelöst Active Directory File Extension - Associated Program (11)

Frage von adm2015 zum Thema Windows Server ...

Windows 8
gelöst Active Directory Default User.v2 Profile - Windows 8.1 Apps Error (4)

Frage von adm2015 zum Thema Windows 8 ...

Windows Server
Active Directory sinnvoll für kleine Firma (15)

Frage von WolfPeano zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...