Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Gruppen eines Users aus ActiveDirectory auslesen - von PC der NICHT in Domain ist (https://www.delphipraxis.net/194825-gruppen-eines-users-aus-activedirectory-auslesen-von-pc-der-nicht-domain-ist.html)

ralfiii 11. Jan 2018 10:02

Gruppen eines Users aus ActiveDirectory auslesen - von PC der NICHT in Domain ist
 
Hallo!

Ich muss die Liste der Gruppen auslesen, denen ein spezieller Benutzer angehört. Normalerweise kann ich das mit NetUserGetGroups tun, und zwar so:

Delphi-Quellcode:
function GetLDapUserGroups(UserName, DomainName : string) : TStringList;
var bufptr : Pointer;
  ServerName : String;
  EntriesRead : DWord;
  TotalEntries : DWord;
  buf : Pbyte;
  PGlobalGroupInfo : PGroupInfo0;
  i : integer;
begin
     result:=TStringList.Create;

     bufptr := nil;
     NetGetAnyDCName(nil, PWideChar(DomainName), bufptr);
     ServerName := PWideChar(bufptr);
     Delete(ServerName, 1, 2); // remove starting '\\' from server Name

     if NetUserGetGroups( PWideChar(ServerName), PWideChar(UserName), 0, buf, MAX_PREFERRED_LENGTH,
                          @EntriesRead, @TotalEntries)=NERR_SUCCESS then
     begin
          PGlobalGroupInfo := PGroupInfo0(buf);

          // Store group names in list
          for i:=0 to EntriesRead - 1 do
          begin
               result.Add(PGlobalGroupInfo^.grpi0_name);
               inc(PGlobalGroupInfo);
          end;
     end;
     NetAPIBufferFree(buf);
end;
Aber das funktioniert nicht, wenn mein Programm auf einem PC läuft, der nicht Teil der AD-Domäne ist. Es ist aber offensichtlich möglich, ich hab's mit "LDAP-Administrator" (von Softerra) e versucht, und dort funktioniert es.

Ich habe folgendes probiert:

* JclWin32.NetUserGetGroups - Nein. (Fast logisch, ich kann hier kein Benutzerpasswort angeben. Funktioniert aber gut, wenn der PC teil der Domäne ist)
* JwaLmaccess.NetUserGetLocalGroups - Nein. Auch keine Möglichkeit, ein Passwort zu übergeben
* NetApi.GetNetUserGroups - gleiche Geschichte hier
* CreateOleObject ('ADODB.Command') ... - Nein

Ich habe es gerade geschafft, das Passwort von Nicht-Domänen-PC zu überprüfen (siehe https://stackoverflow.com/questions/...part-of-domain ). Also habe ich versucht, die obige Kommandos auszuführen wenn ich angemeldet bin. Hat auch nix gebracht.

In den Jedi-Quellen hab ich die Funktion "JwaWinLDAP.ldap_search_sW" gefunden. Für mich riecht das vielversprechend, da ich den LDap-Token vom Anmeldevorgang weitergeben könnte. Ich habe jedoch keine Code-Beispiele für die Suche nach Benutzergruppen gefunden. Kann mir da jemand von euch damit helfen? Oder habt ihr sonst einen Tip wie das gehen könnte?

Kann mir bitte jemand in die richtige Richtung gehen? :) Vielen Dank!

himitsu 11. Jan 2018 13:33

AW: Gruppen eines Users aus ActiveDirectory auslesen - von PC der NICHT in Domain ist
 
Vorher mit MSDN-Library durchsuchenNetJoinDomain der Domain beitreten und dann hast du wieder Zugriff?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz