Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Actice Directory Gruppenzugehörigkeit als NichtAdmin lesen (https://www.delphipraxis.net/212364-actice-directory-gruppenzugehoerigkeit-als-nichtadmin-lesen.html)

egentur 31. Jan 2023 10:34

Actice Directory Gruppenzugehörigkeit als NichtAdmin lesen
 
Hallo zusammen

Für meine Anwendung brauche ich die Gruppennamen aus dem Active Directory in denen der User Mitglied ist.

Das funktioniert mit NetUserGetGroups auch ganz gut, aber nur wenn der angemeldete Windows User AD Admin Rechte hat.

wenn der Windows User keine AD Admin Rechte hat bekomme ich Access denied genau wie bei

net user xy /domain

Was ich benötige ist:

1. angemeldeter Windows user hat keine AD Admin Rechte, muss aber seine eigenen Gruppen auslesen können

2. angemeldeter Windows user hat keine AD Admin Rechte, muss aber ein beliebiger Ad User der sich am Programm anmeldet muss hiefür seine eigenen Gruppen auslesen können

Ein Test mit ADSI funktioniert nur wenn der AD User, der sich am Programm anmeldet, seinerseits AD Adminrechte hat


Gibt es eine Lösung die in allen Fällen Funktioniert ?

shebang 31. Jan 2023 11:02

AW: Actice Directory Gruppenzugehörigkeit als NichtAdmin lesen
 
Zitat:

Zitat von egentur (Beitrag 1518086)
net user xy /domain

Ich kann als normaler User mit dem Befehl sowohl meine eigene als auch die Gruppenzugehörigkeit anderer User bei uns im AD abfragen. Es scheint also eine Einstellung des AD selbst zu sein, wenn es bei euch nicht funktioniert.

egentur 6. Feb 2023 10:46

AW: Actice Directory Gruppenzugehörigkeit als NichtAdmin lesen
 
Hat jemand eine Idee welche Einstellungen dies sein könnten ?
Ich habe hier als DomönenServer einen Windows Server 2019 mit Default Einstellungen.

TigerLilly 6. Feb 2023 12:39

AW: Actice Directory Gruppenzugehörigkeit als NichtAdmin lesen
 
Ich greife auf das AD mit TADOQuery und LDAP zu + hatte da kein Problem mit Adminrechten oder so.

Dieses zB um den SID des aktuellen UISers zu bekommen:

Delphi-Quellcode:
var
  adoConnectionData: TADOConnection;
  qQuery: TAdoQuery;
  s:     string;
  sSql:  string;
  v:     variant;
  oSID:  PSID;
...
begin
    adoConnectionData := TADOConnection.Create(nil);
    qQuery := TADOQuery.Create(nil);
    qQuery.Connection := adoConnectionData;
    adoConnectionData.Name := 'adoConnectionData';
    adoConnectionData.ConnectionString := 'Mode=Read;';
    adoConnectionData.LoginPrompt := False;
    adoConnectionData.Provider := 'ADsDSOObject';
    adoConnectionData.Connected := True;
    sSql := 'select objectSID from ''LDAP://' + sDomain + ''' where objectClass=''person'' and sAMAccountName=' + QuotedStr(sUSername);
    qQuery.SQL.Text := sSql;
    qQuery.Open;
    v   := qQuery.Fields[0].Value;
    oSID := VarArrayLock(v);
    s   := SIDToString(oSID);
    VarArrayUnlock(v);
    Result := s;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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