LDAP-Attribute mit LDAPSend ändern

Rund um die LCL und andere Komponenten
Antworten
MartinKoeditz
Beiträge: 1
Registriert: Mo 17. Okt 2022, 16:36

LDAP-Attribute mit LDAPSend ändern

Beitrag von MartinKoeditz »

Hallo zusammen,

hat jemand Erfahrungen mit dem Ändern von LDAP-Attributen mittels Synapse LDAPSend gemacht? Ich versuche, die Beschreibung von Benutzern zu ändern. Dies klappt jedoch nicht.

Hier mein Code:

Code: Alles auswählen

unit Main;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ComObj, lDapSend, fpjson, jsonparser;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;

    procedure Button1Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  ldap: TLDAPsend;
  lSearchAttribs: TStringList;
  lAttrib: TLDAPAttribute;
begin
  ldap := TLDAPsend.Create;
  lSearchAttribs := TStringList.Create;
  lAttrib := TLDAPAttribute.Create;
  try
    ldap.TargetHost := '10.1.1.200';
    ldap.UserName := 'syndesk-dev\administrator';
    ldap.Password := 'secret';

    ldap.Login;
    if ldap.Bind then
    begin
      Memo1.Lines.add('Bind OK');
      lSearchAttribs.Add('sAMAccountName');
      lSearchAttribs.Add('distinguishedName');

      lSearchAttribs.Add('title');
      lSearchAttribs.Add('member');
      lSearchAttribs.Add('description');
      lSearchAttribs.Add('lastLogonTimestamp');
      ldap.Search('CN=Administrator,CN=Users,DC=syndesk-dev,DC=local', False, '', lSearchAttribs);
      Memo1.Lines.add(LDAPResultDump(ldap.searchresult));

      lAttrib.Clear;
      lAttrib.AddPair('description', 'Admin-Beschreibung');
      if(ldap.Modify('CN=Administrator,CN=Users,DC=syndesk-dev,DC=local', TLDAPModifyOp.MO_Replace, lAttrib) = false) then
      begin
           Memo1.Lines.add('Ergebnis: ' + ldap.ResultString);
      end;

    end;
    ldap.Logout;
  finally
    ldap.Free;
    lSearchAttribs.Free;
  end;
end;

end.
Als Ergebnis erhalte ich:

Code: Alles auswählen

Memo1
Bind OK
Results: 1

Result: 0
  Object: CN=Administrator,CN=Users,DC=syndesk-dev,DC=local
  Attribute: description
    Vordefiniertes Konto für die Verwaltung des Computers bzw. der Domäne
  Attribute: distinguishedName
    CN=Administrator,CN=Users,DC=syndesk-dev,DC=local
  Attribute: sAMAccountName
    Administrator
  Attribute: lastLogonTimestamp
    133101479466054732

Ergebnis: 00000057: LdapErr: DSID-0C090EBF, comment: Error in attribute conversion operation, data 57, v3839
Die Abfrage von Objekten funktioniert. Nur das Ändern wirft mir Fehler aus. Eventuell nutze ich die falsche Syntax. Wäre toll, wenn jemand schonmal was ähnliches gemacht hat.

Dank und Gruß
Martin

schoschy
Beiträge: 3
Registriert: Di 18. Okt 2022, 15:46

Re: LDAP-Attribute mit LDAPSend ändern

Beitrag von schoschy »

Hab ich mir extra einen Account machen müssen. :)

Attribute können mehrfach verwendet werden, weshalb dein modify ins leere rennt.
Ein changetype modify sieht in etwa so aus (apache directory studio: log)

Code: Alles auswählen

changetype: modify
delete: description
description: 2
-
add: description
description: 23
-
Es könnte also im lAttrib ein verweis auf das Attribut fehlen, welches "geändert" werden soll.
Synapse LDAPSend mal durchkämmen, was TLDAPModifyOp.MO_Replace genau macht.

Schoschy

Antworten