Erstellung eines AD-Formulars

Navigation:  Tutorial: Der Form Editor >

Erstellung eines AD-Formulars

Version 1.0.0

Der Form Editor in ACMP unterstützt auch die Verwendung der LDAP-Befehle Search und Modify. Im folgenden wird aufgezeigt, wie Sie ein entsprechendes Formular erstellen.

 

Sie werden kennenlernen, wie Sie ein Formular erstellen und einen LDAP-Suchfilter einrichten und wie Sie bei LDAP-Attribute über das Formular ändern können.

 

Vorbereitung in der Code-Ansicht

Wechseln Sie in die Code-Ansicht des Formulars und fügen Sie zunächst die folgenden Units hinzu: Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, SysUtils, Buttons, AagonLDAP;

 

Anschließend definieren Sie globale Variablen vom Typ String für den Host, den Port, den User, das Passwort, die Basis der Suche, den Suchfilter und für eine Fehlermeldung sowie eine gloabale Variable vom Typ TStringList für die Ergebnissliste.

 

Codebeispiel

uses

  Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, 

  StdCtrls, SysUtils, Buttons, AagonLDAP;

var

  llist : TStringList;

  strHost, strPort, strUser, strPwd, strBaseDN, strFilter, strError: String; 

 

Erstellen Sie eine Funktion, mit welcher Sie eingegebene Strings escapen können.

 

Codebeispiel

function escapevalues(Value: String) : String;

begin

  Value := '"'+StringReplace(Value,',','","')+'"';

  Result := StringReplace(Value, '","","', ',');

end; 

 

Hinweis

Hinweis:

Diese Funktion muss sich immer oberhalb der erstellten Prozeduren befinden.

 

Erstellen Sie nun eine Prozedur, in der Sie für die Variablen Werte festlegen:

 

Wert

Beschreibung

Codebeispiel

Host

Domänencontroller an den die Anfrage gestellt wird

procedure formActivate(Sender: TObject);

begin

  strHost := '192.168.1.1';

  strPort := '389';

  strUser := 'MeinBenutzer@meine.domäne';

  strPwd := 'meinGeheimesPasswort123';

  strBaseDN := 'dc=meine,dc=domäne';  

  strFilter := '';

  

  llist := TStringList.Create();

end;

Port

Für die Anfrage verwendeter Port (Port 389: LDAP, Port 3268: Global Katalog)

User

Benutzer für die Anfrage

Passwort

Passwort des Benutzers

BaseDN

Basis der Suche (DistinguishedName)

Filter

LDAP-Suchfilter

 

Zusätzlich legen Sie eine Liste an, in welcher Ihre Ergebnisse gespeichert werden sollen um diese im Formular anzuzeigen.

 

Erstellen des Formulars

Wechseln Sie in die Design-Ansicht des Formulars und erstellen Sie ein Formular mit den folgenden Elementen:

 

Ein Textfeld zur Eingabe des Suchfilters (hier kann optional ein beschreibendes Label eingefügt werden)
Einen Button, mit dem Sie den Suchfilter ausführen
Eine Textarea, in der Ihnen die Suchergebnisse angezeigt werden (hier kann optional ein beschreibendes Label eingefügt werden)

 

11.5 - FelderLDAP-Suche

Beispiel des Formulars - Suche

 

Damit Sie den Suchfilter nicht bei jedem Aufruf erneut vollständig eintragen müssen, markieren Sie das Feld und wählen am linken Fensterrand die Eigenschaft Text aus. Tragen Sie nun Ihren Suchfilter ein. In diesem Bespiel wird der folgende Filter verwendet:

 

(&(ObjectClass=User)(!(objectClass=Computer)))

 

Das Textfeld ist nun schon mit dem Suchfilter vorgefüllt.

 

Suchen-Button konfiguriern

Damit Sie die LDAP-Suche ausführen können, müssen Sie den Suchen-Button konfigurieren. Wechseln Sie hierzu in die Code-Ansicht des Formulars. Hier erstellen Sie nun die Prozedur SearchLdapClick.

 

Definieren Sie zunächst eine temporäre Liste sowie einen Integer. Damit Sie den im Textfeld edfilter bereitbestellten Suchfilter benutzen, weisen Sie den Text des Suchfilterfeldes Ihrer Filter-Variable zu. Führen Sie einen LDAPsearch aus. Hierbei geben Sie den Host, den Port, die Authentifizierungsmethode, den User, das Passwort, Ihren Einstiegspunkt, den Filter, den Suchbereich, die Ergebnisliste und einen String für eventuelle Fehlermeldungen an.

 

Die in der Variable llist enthaltenen Ergebnisse werden nun durchlaufen und der listbox1 hinzugefügt.

 

Codebeispiel

Procedure SearchLdapClick;                               

var

  ltemp : TStringList;

  i : Interger;

begin

  ltemp := TStringList.Create();

  strFilter := edfilter.Text;

  llist.Clear();

  ListBox1.Clear();

  LDAPSearch(strHost, strPort, 2, strUser, strPwd, strBaseDN, strFilter, 2, llist, strError);

  for i := 0 to llist.count-1 do

  begin                              

    ltemp.commatext := escapevalues(llist.Strings[i]);

    listbox1.items.Add(ltemp.values['CN']);

  end                                                                                          

  ltemp.free();            

end;

 

Wechseln Sie nun zurück in die Design-Ansicht und markieren den Suchen-Button. In der Event-Übersicht wählen Sie für das Event OnClick die soeben erstelle Prozedur aus der Liste aus.

 

Wenn Sie nun im Formular den Button Suchen klicken, werden Ihnen die Ergebnisse im Suchergebnisfeld angezeigt.

 

Auslesen / Anzeigen einzelner Werte

Damit Sie sich einzelne ausgelesene Werte für die Ergebnisse anzeigen lassen können, erstellen Sie nun in der Design-Ansicht die entsprechender Felder. Im Beispiel werden die Felder Vorname, Nachname und Telefonnummer angelegt.

 

11.5 - FelderLDAP-Anzeige

Beispiel des Formulars - Anzeige

 

Damit Ihnen nun zu einem Ergebnis auch die richtigen Werte angezeigt werden, müssen Sie in der Code-Ansicht die folgende Prozedur erstellen:

 

Codebeispiel

procedure UserSelect;

var

  ltemp : TStringList;

begin

  ltemp := TStringList.Create();

  if ((ListBox1.ItemIndex > -1) AND (ListBox1.Count > 0)) then

  begin

    ltemp.commatext := escapevalues(llist.Strings[ListBox1.ItemIndex]);

    edGivenname.Text := ltemp.Values['givenName'];

    edSN.Text := ltemp.Values['SN'];

    edTelephonenumber.Text := ltemp.Values['telephoneNumber'];

  end   

  ltemp.Free();

end; 

 

Zum Anzeigen der Werte wechseln Sie nun in die Design-Ansicht und markieren das Suchergebnisfeld. Im linken Fensterbereich wählen Sie den Reiter Events und tragen bei OnClick die gerade erstellte Prozedur ein.

 

Anpassen einzelner Werte

Erstellen Sie nun einen Button in der Design-Ansicht, mit dem Sie die Daten ändern wollen. Im Beispiel wird nur die Telefonnummer aktualisiert.

 

11.5 - FelderLDAP-Aendern

Beispiel des Formulars - Ändern

 

Führen Sie nun in der Design-Ansicht einen Doppelklick auf den neu erstellten Button aus um in die Code-Ansicht zu wechseln.

 

Definieren Sie nun je eine Liste für das Attribut und die Ergebnismenge sowie einen Integer. Nachdem Sie geprüft haben, welches Ergebnis ausgewählt und angezeigt wurde, können Sie den im Anzeigefeld eingetragenen Wert (in diesem Beispiel die Telefonnummer) im markierten Ergebnis aktualisieren. Hierzu führen Sie einen LDAPmodify aus. Als notwendige Parameter geben Sie den Host, den Port, die Authentifizierungsmethode, den User, das Passwort, das anzupassende AD-Object und den anzupassenden Wert an. Abschließend geben Sie an, ob der eingegebene Wert den vorhandenen überschreiben soll (true) oder ob der eingegebene Wert an den bereits vorhandenen angefügt werden soll (false).

 

Codebeispiel

procedure ModifyLDAPObjectTelephonenumberClick;

var

  lattrib, ltemp : TStringList;

  strUserDN : String;

  intEC : Integer;

begin

  lattrib := TStringList.Create();       

  ltemp := TStringList.Create();

  strUserDN := '';       

                                                       

  ltemp.commatext := escapevalues(llist.Strings[ListBox1.ItemIndex]);

  

  strUserDN := ltemp.Values['distinguishedName'];

  lattrib.Add('telephonenumber='+edTelephonenumber.text);

  

  intEC := LDAPModifyAttributes(strHost, strPort, 2, strUser, strPwd, strUserDN, lattrib, false);     

  

  lattrib.Free();  

  ltemp.Free();   

end;    

Zuletzt bearbeitet am 01.09.2017