![]() |
Active Directory abfragen
Hallo zusammen.
Ich suche nach 2 Funktionen um Daten aus einem Active Directory zu beziehen. Leider ist meine Suche nicht so erfolgreich gewesen, zwar gibt es einige wenige Quellen zu diesem Thema, aber ich habe nicht wirklich das richtige gefunden. Ich suche folgende Funktionen: 1. Ich übergebe einen Domänennamen & Benutzernamen und möchte eine Liste aller Gruppen in der dieser User Mitglied ist. 2. Ich übergeben einen Rechnernamen und möchte alle Domänen, in der dieser Rechner eingetragen ist. Hat jemand Ideen/Source dazu? Danke und viele Grüße Codewalker |
Re: Active Directory abfragen
Schau mal unter
![]() Eventuell hilft Dir das weiter. Stephan |
Re: Active Directory abfragen
Sieht sehr gut aus. Leider ist es mehr allgemein gehalten. Ich werde damit mal ein wenig spielen, auch wenn ich noch nicht weiß, wie ich an Gruppen und Computer komme. Dort geht es ja mehr um die User...
|
Re: Active Directory abfragen
Zu 1: Guck dir mal NetUserGetGroups an:
Zitat:
|
Re: Active Directory abfragen
In welcher Datei ist die Funktion den deklariert? Delphi kennt die von Haus aus nicht und auch das Refactoring findet nichts.
|
Re: Active Directory abfragen
Musst du selber deklarieren oder du nutzt die Jedi Header-Übersetzungen. Ich würde es aber selber machen, weil die Jedi Header-Übersetzungen etwas viel Overhead haben für so etwas.
|
Re: Active Directory abfragen
Hab' gerade noch mal auf der Festplatte gesucht und dabei ein Fragment zum Thema gefunden. Eventuell kannst Du damit was anfangen. Ob sich das Teil kompilieren lässt weiß ich nicht, aber eventuell hilft es Dir beim Umsetzen deiner Idee.
Prinzipiell funktioniert das Ganze über die ADO-Schnittstelle mit SQL. Stephan |
Re: Active Directory abfragen
So sollte es gehen:
Delphi-Quellcode:
type
NET_API_STATUS = DWORD; type TGroup_Users_Info_0 = record grui0_name: PChar; end; function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external 'Netapi32.dll'; function NetUserGetGroups(servername: LPCWSTR; username: LPCWSTR; level: DWORD; flags: DWORD; var bufptr: Pointer; prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD): NET_API_STATUS; stdcall; external 'Netapi32.dll'; |
Re: Active Directory abfragen
Danke für die schnellen Antworten - ich werd mich gleich an die Arbeit werfen :thumb:
|
Re: Active Directory abfragen
Hi codewalker,
schon was gefunden wo passt? bin auch auf der Suche nach sowas nur noch mit einer Authorizierungsabfrage gegenüber dem AD! mfg |
Re: Active Directory abfragen
Reine Autorisierung lässt sich über eine SSPI-Unit von Luckie (er hat sie gepostet, ist aber nicht von ihm). Die Unit findest du in
![]() Diese Unit beinhaltet nur eine Funktion LogonUser. Dieser gibt man Domäne, Username und Password mit und bekommt einen Boolean zurück. Damit kann man auf lokale Konten authentifizieren (Domäne = '') und auch das AD. Man kann keinerlei genauere Einschränkungen machen (Rechner, OU, Gruppen, etc.), aber es hat bei mir gereicht, um ein WebInterface für mein Programm zu machen mit sessionbasiertem Login (über AD). Mir fehlt auch noch die Überprüfung auf eine Gruppenmitgliedschaft, aber AD und Delphi ist nicht so einfach und es fast nur halbgare Quellen und nichts gesammeltes und erklärtes. Ich werd noch ein Weilchen brauchen, wenn du was hast, würde ich mich über einen Tipp sehr freuen ;-) |
Re: Active Directory abfragen
Liste der Anhänge anzeigen (Anzahl: 3)
So meine Lieben.
Ich habe mal alles zusammengegrast, was ich für das AD gefunden habe und ein Mini-Projekt daraus gestrickt. Ziel war es, den Zugriff so einfach wie möglich zu halten. Anbei das Beispiel... viel Spaß |
Re: Active Directory abfragen
Hi,
Vielen Dank. habe die SSPI-Unit von Luckie genommen und es funzt wie immer alles von Luckie. Danke für den Tip. hat mir sehr weitergeholfen. mfg |
Re: Active Directory abfragen
Hi, codewalker,
Ich bin soeben dabei einige userdaten aus dem AD in eine SQL DB zu speichern. Ich hoffe das das du mir ev. einige Tipps geben kansnt. - ich muss über mehrere DC und Domänen suchen. - in deinem BSP. bekomme ich nur den name zurück,ich brauche aber alle Userdaten . kannst du mir da ev. hilfe geben. danke |
Re: Active Directory abfragen
Das suchen über mehrere Domänen habe ich noch nicht auf die Reihe bekommen. Du kannst natürlich nacheinandern in den Domänen suchen. Auch versuche ich immer noch eine Liste aller verfügbaren Domänen (wie im Windows-Anmeldedialog) zu bekommen, das kriege ich aber noch nicht hin.
Wenn du mal in den Quelltext schaust, habe ich eine Schleife, die alle UserObjects auflistet. Davon gebe ich nur den Namen zurück, du könntest die Schleife aber recht leicht ändern, so dass die Objekte direkt zurückgegeben werden. Dann hättest du auch Zugriff auf alle Elemente. Ich werd mir das auch noch mal anschauen, hab aber im Moment (=diese Woche :mrgreen: ) leider nicht wirklich Zeit dazu, so dass ich nichts versprechen will. |
Re: Active Directory abfragen
Zitat:
Mit dem Pfad "WinNT:" bekommst du eine Liste aller Domänen. Mit "WinNT://Domänenname" bekommst du alle User, Gruppen und Rechner dieser Domäne. Mit "WinNT://deinrechnername" bekommst du lokale User, Gruppen & Services. |
Re: Active Directory abfragen
Hi,
Meisnt du diese?
Delphi-Quellcode:
Ich blick da net ganz durch.
function TForm2.ListUsers(Domain: String): TStringList;
var dom : IADsContainer; begin List.Clear; if dom <> nil then dom._Release; ADsGetObject('WinNT://' + Domain, IADsContainer, dom); dom.Filter := VarArrayOf(['user']); ADsEnumerateObjects(dom, AddToList); Result:=TStringList.Create; Result.Assign(List); end; Du setzt den Filter auf User,und machst füllste die lsite mit ADsEnumerateObjects. danke |
Re: Active Directory abfragen
Die Funktion "AddtoList" die als Parameter übergeben wird extrahiert den Namen und gibt ihn in einer Stringliste aus. Ich wollte es halt möglichst einfach halten. Gebe dort einfach eine eigene Funktion an. Diese wird für jedes gefundene Userobjekt dann einmal aufgerufen und erhält das UserObjekt als Parameter.
|
Re: Active Directory abfragen
Hi,
danke. nur ich muss ja dann mit Disp.xy die anderen Daten herholen? wo stehn dann die daten drin,wie mail,Department telphonenumber usw. sorry aber ich habe bis jetzt nur mal mit LDAP getestet und da blockt mein DC bei mehr wie 1000 results ab und deswegen muss i auf die WinNt Variante schwenken. danke dir. |
Re: Active Directory abfragen
hmmm. Das weiß ich so ad hoc auch nicht. Ich schau gleich mal rein und versuche das mal rauszubekommen. (Ansonsten sollte es im MSDN zum Interface auch eine Hilfe geben.)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz