AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Active Directory - User zu einer Gruppe hinzufügen
Thema durchsuchen
Ansicht
Themen-Optionen

Active Directory - User zu einer Gruppe hinzufügen

Ein Thema von hschmid67 · begonnen am 13. Jan 2023 · letzter Beitrag vom 18. Jan 2023
Antwort Antwort
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
73 Beiträge
 
Delphi 12 Athens
 
#1

Active Directory - User zu einer Gruppe hinzufügen

  Alt 13. Jan 2023, 12:16
Hallo zusammen,

wie kann ich einen AD-User zu einer Gruppe hinzufügen? Ich dachte, ich wäre schon sehr weit, denn mit folgendem Code geht manches Schreiben in Objekte des AD:

Delphi-Quellcode:
uses
  web.win.adstypes,
  activeds_tlb;

procedure WriteUserAttrib;
var
  lResourceStr: string;
  lADObj: IADsObject;
  lStr: string;
begin
  lResourceStr := 'LDAP://domain.de/cn=TestUser,ou=TEST,dc=domain,dc=de';

  ADsOpenObject(lResourceStr, lUsername, lPassword, 1, IADsObject, lADObj);

  lStr := lADObj.Get('comment'); // nur zum Testen
  Memo1.Lines.Add(lStr);

  lADObj.Put('comment', 'dummytext');
  lADObj.SetInfo;
end;
Das funktioniert für einfache Attribute ganz gut, aber ich scheitere am Attribut "memberOf". Das ist ein Array und ich kann die Werte damit auch auslesen, aber ich bekomme es nicht hin, das wieder zurückzuschreiben.

Selbst so funktioniert es nicht, also nur auslesen und gleiches gleich wieder reinschreiben:

Delphi-Quellcode:
var
  lMember: Variant;
begin
  lMember := lADObj.Get('memberOf');
  lADObj.PutEx(2, 'memberOf', lMember);
  lADObj.SetInfo;
end;
Fehler: "Der Server kann die Anforderung nicht ausführen."

Nun hab ich es von der anderen Seite her probiert, also ausgehend von der Gruppe:

Delphi-Quellcode:
var
  lResourceStr: string;
  lADObj: IADsGroup;
  lStr: string;
begin
  lResourceStr := 'LDAP://domain.de/cn=TestGruppe,ou=TEST,dc=domain,dc=de';

  ADsOpenObject(lResourceStr, lUsername, lPassword, 1, IADsGroup, lADObj);

  lStr := lADObj.Get('cn'); // nur zum Testen
  Memo1.Lines.Add(lStr);

  lADObj.Add('cn=TestUser,ou=TEST,dc=domain,dc=de');
  lADObj.SetInfo;
end;
Hier bekomme ich den ominösen OLE-Fehler 80005000.

Weiß jemand Rat? Ich möchte nur die Powershell vermeiden, alle anderen Wege direkt in Delphi sind willkommen.

Viele Grüße
Harald
Harald Schmid
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#2

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 13. Jan 2023, 15:01
Führst Du das unter einem Admin-Account aus? Änderungen am AD sind meines Wissens die Sache von Domain-Administratoren, erfordern also weitreichende Rechte.
Peter Below
  Mit Zitat antworten Zitat
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
73 Beiträge
 
Delphi 12 Athens
 
#3

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 13. Jan 2023, 15:09
ja, der User hat Admin-Rechte - und wie gesagt, andere Änderungen einfacher Attribute funktionieren auf diese Weise.
Harald Schmid
  Mit Zitat antworten Zitat
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
73 Beiträge
 
Delphi 12 Athens
 
#4

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 13. Jan 2023, 16:43
Jetzt hab ich doch noch die "Kleinigkeit" gefunden, die gefehlt hat - und jetzt funktioniert es:

Delphi-Quellcode:
var
  lResourceStr: string;
  lADObj: IADsGroup;
  lStr: string;
begin
  lResourceStr := 'LDAP://domain.de/cn=TestGruppe,ou=TEST,dc=domain,dc=de';

  ADsOpenObject(lResourceStr, lUsername, lPassword, 1, IADsGroup, lADObj);

  lStr := lADObj.Get('cn'); // nur zum Testen
  Memo1.Lines.Add(lStr);

  lADObj.Add('LDAP://domain.de/cn=TestUser,ou=TEST,dc=domain,dc=de'); // das hat gefehlt: "LDAP://domain.de/..."
  lADObj.SetInfo;
end;
Die Domain, der LDAP-Pfad muss komplett sein!

Vielen Dank fürs Mitdenken und viele Grüße
Harald Schmid
Harald Schmid
  Mit Zitat antworten Zitat
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
73 Beiträge
 
Delphi 12 Athens
 
#5

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 13. Jan 2023, 16:47
wüsste dennoch noch jemand, wie man das Array korrekt übergibt, wenn man die Methode über den User nutzen möchte. Welchen Typ hat das Array?

Delphi-Quellcode:
var
  lMember: Variant;
begin
  lMember := lADObj.Get('memberOf');
  lADObj.PutEx(2, 'memberOf', lMember);
  lADObj.SetInfo;
end;
Viele Grüße
Harald Schmid
Harald Schmid
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 16. Jan 2023, 09:55
Müsste der Rückgabetyp von lADObj.Get('memberOf'); nicht ein array of variant sein?
Wenn ich mit dem ADExplorer von Sysinternals mein User-Account anschaue, hat der Syntax: DN, Count: 8 und jeder Eintrag besteht aus "CN=GUID/Gruppenname...,OU=Firmenname-Berlin,DC=Firmenname,DC=local".
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 16. Jan 2023, 13:26
Ich kann zur Problemlösung nicht direkt etwas beitragen, aber ich habe mal durch Zufall dieses Projekt gefunden. Getestet habe ich es mangels Bedarf nicht, aber vielleicht hilft es dir ja weiter.

https://github.com/EdZava/VCL-ActiveDirectory4Delphi
  Mit Zitat antworten Zitat
kopernikus

Registriert seit: 8. Feb 2008
19 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Active Directory - User zu einer Gruppe hinzufügen

  Alt 18. Jan 2023, 20:01
Ich habe mich vor einigen Jahren einmal mit dieser Problematik beschäftigt. Ausführliche Beschreibungen und auch die Quelltexte dazu findet man auf meiner Webseite. Vielleicht helfen diese Informationen weiter.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 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