Verstecke letzte Bearbeiter
gru 1.1 1 {{content/}}
2
gru 13.1 3 LDAP-Abfragen verhalten sich ähnlich wie [[Datenbankabfragen>>doc:Formcycle.UserInterface.Data.DBQueries]] oder [[Datenquellen>>doc:Sources]]. Sie dienen dazu, dynamisch Daten von einem //LDAP//-Server zu ermitteln. Hierbei steht neben der Filterung über eine //LDAP-Query// auch die Einschränkung der Rückgabewerte auf festgelegte Attribute zur Verfügung.
gru 1.1 4
5 == LDAP-Abfrage anlegen ==
6
nlo 17.1 7 {{id name="fig_data_ldap_query"/}}
nlo 31.1 8 {{figure image="data_ldap_query_de.png"}}Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage{{/figure}}
nlo 17.1 9
awa 32.2 10
11 {{html wiki="true"}}
12 <div class='xm-figure xm-float-right xm-clear-h2' data-alt='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_ldap_query_de.png' width='300' group='$height' group='$group' title='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'/}}<div class='xm-figure-caption'>Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage</div></div></div>
13 {{/html}}
14
15
sas 32.8 16
17 {{html wiki="true"}}
18 <div class='xm-figure xm-float-right xm-clear-h2' data-alt='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_ldap_query_de.png' width='300' group='$height' group='$group' title='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'/}}<div class='xm-figure-caption'>Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage</div></div></div>
19 {{/html}}
20
21
22
23 {{html wiki="true"}}
24 <div class='xm-figure xm-float-right xm-clear-h2' data-alt='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_ldap_query_de.png' width='300' group='$height' group='$group' title='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'/}}<div class='xm-figure-caption'>Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage</div></div></div>
25 {{/html}}
26
27
sas 33.1 28
29 {{html wiki="true"}}
30 <div class='xm-figure xm-float-right xm-clear-h2' data-alt='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'><div class='xm-figure-inner' style='width:310px'>{{lightbox image='data_ldap_query_de.png' width='300' group='$height' group='$group' title='Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage'/}}<div class='xm-figure-caption'>Konfigurationsoberfläche zum Anlegen von LDAP-Abfragen: (1) Liste existierender LDAP-Abfragen, (2) Editor zum Definieren der Abfrage, (3) Eigenschaften-Panel der Abfrage, (4) Attributfilter der Abfrage, (5) Generierte Servlet-URL zur Verwendung der Abfrage, (6) Konsole zum Testen der Abfrage</div></div></div>
31 {{/html}}
32
33
nlo 17.1 34 * Öffnen Sie das Modul "LDAP-Abfragen" und klicken Sie auf die Schaltfläche "Neu" {{ficon name="plus-circle-outline"/}} in der Kopzeile der Liste (siehe [[Abbildung>>||anchor="fig_data_ldap_query"]]).
gru 1.1 35 * Vergeben Sie einen eindeutigen Namen und optional eine Beschreibung.
gru 14.1 36 * Aktivieren Sie ggf. die Benutzung der //LDAP//-Verbindung des [[Mandanten>>doc:Formcycle.SystemSettings.UserInterface.Clients]] oder wählen sie eine separate [[//LDAP//-Verbindung>>doc:Formcycle.UserInterface.Data.LDAPConnections]] aus.
nlo 17.1 37 * Definieren Sie für diese //LDAP//-Abfrage zu verwendende //BaseDN//. Diese dient als Wurzel für die Suche mittels der eigentlichen Filterabfrage.
gru 32.5 38 * Definieren Sie die Abfrage in entsprechender //LDAP//-Filtersyntax ([[Tutorial>>url:http://www.selfadsi.de/ldap-filter.htm#FilterDef||rel="__blank"]]). Parameter werden innerhalb des Filters durch {{code language="none"}}?{{/code}} angegeben und durch entsprechende Übergaben ersetzt (Punkt 2 in [[Abbildung>>||anchor="fig_data_ldap_query"]]).
nlo 17.1 39 * Tragen Sie ggf. die von Ihnen benötigten Attribute in den Attributfilter ein. Die Rückgabe der Abfrage wird anschließend auf diese beschränkt. Wird hier kein Attribut definiert, werden alle Attribute des Such-Ergebnisses zurückgeliefert (Punkt 4 in [[Abbildung>>||anchor="fig_data_ldap_query"]]).
gru 1.1 40
41 == Verwendung der Abfrage ==
42
43 Die //LDAP//-Datenabfrage ist innerhalb und außerhalb eines Formulars über das hierfür vorgesehene //Servlet// unter Verwendung der entsprechenden Parameter abrufbar.
44
gru 32.5 45 {{code language="none"}}
gru 1.1 46 http://<server>/formcycle/datenabfrageldap
47 {{/code}}
48
nlo 18.1 49 Die Servlet-URL wird unterhalb der Attributfilter angezeigt (siehe Punkt 5 in [[Abbildung>>||anchor="fig_data_ldap_query"]]).
gru 1.1 50 Folgende URL-Parameter sind hierbei möglich:
51
52 {{table dataTypeAlpha="0" preSort="0-asc"}}
53 |=Parametername|=Beschreibung|=Erforderlich
54 |name|Muss dem Namen der LDAP-Abfrage entsprechen.|Ja
55 |mandantName|Muss dem Namen des Mandanten entsprechen, unter welchen diese Datenquelle erstellt wurde.|Ja, wenn //projektId// nicht gegeben
56 |projektId|Muss der ID des Formulars entsprechen. Diese Information kann über XFC_METADATA.currentProject.id abgerufen werden.|Ja, wenn //mandantName// nicht gegeben
gru 33.13 57 |queryParameter|Nur erforderlich, wenn innerhalb der LDAP-Abfrage Platzhalter in Form eines Fragezeichens {{code language="none"}}?{{/code}} verwendet werden. Ist dies der Fall, werden die einzelnen Parameter übergeben getrennt mit dem Trennzeichen, welches durch den Parameter //delimiter// festgelegt wird.
58
59 Wenn möglich sollte für neue Projekte anstelle des Parameters //queryParameter// der Parameter //queryParameterValues// verwendet werden, da //queryParameter// in einer zukünftigen Version von {{formcycle/}} nicht mehr unterstützt werden wird.|Nein
60 |delimiter|Trennzeichen, welches die einzelnen Werte des //queryParameter// trennt. Standardmäßig ein Komma {{code language="none"}},{{/code}}.
61
62 Wenn möglich sollte für neue Projekte anstelle der Parameter //delimiter// und //queryParameter// der Parameter //queryParameterValues// verwendet werden, da //delimiter// in einer zukünftigen Version von {{formcycle/}} nicht mehr unterstützt werden wird.|Nein
gru 33.15 63 |queryParameterValues|{{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 zur Verfügung stehende Alternative zu den Parametern //queryParameter// und //delimiter//. Wie diese Parameter ist auch //queryParameterValues// nur dann erforderlich, wenn innerhalb der LDAP-Abfrage Platzhalter in Form eines Fragezeichens {{code language="none"}}?{{/code}} verwendet werden. Ist dies der Fall, werden die einzelnen Abfrageparameter hintereinander jeweils als ein eingener Parameter //queryParameterValues// übergegeben, wodurch auch die Verwendung des Parameters //delimiter// entfällt.|Nein
gru 1.1 64 {{/table}}
65
awa 32.4 66 Bei Zugriff aus einem Formular verwenden Sie bitte immer das globale Variablen-Objekt {{jsdoc page="metadata" name="urls"}}XFC_METADATA.urls{{/jsdoc}}. In diesem Objekt stehen alle relevanten URLs von {{formcycle case="dat"/}} zur Verfügung, sodass diese Beispielhaft wie folgt ermittelt werden kann: {{code language="javascript"}}XFC_METADATA.urls.datasource_ldap{{/code}}.
gru 1.1 67
68 Die Rückgabe des Abfrage-Ergebnisses erfolgt im //JSON//-Format und kann somit innerhalb des Formulars direkt genutzt werden.
69
nlo 18.2 70 == Testen der Abfrage ==
71
72 {{info}}
gru 32.5 73 Zum schnellen Testen der Abfrage steht die Tastenkombination {{code language="none"}}Strg + Enter{{/code}} zur Verfügung.
nlo 18.2 74 {{/info}}
75
nlo 19.1 76 LDAP-Abfragen können direkt in der Konfigurationsoberfläche getestet werden. Hierzu steht eine Testkonsole unterhalb des Editors zur Verfügung (siehe [[Abbildung>>||anchor="fig_data_ldap_query"]]).
nlo 18.2 77 Im Header der Testkonsole befindet sich eine Reihe von Buttons zur Steuerung der Abfrage:
78
79 * {{ficon name="database-search"/}}**Abfrage ausführen**
gru 32.5 80 Führt die LDAP-Abfrage aus. Werden //Abfrageparameter// ({{code language="none"}}?{{/code}}) verwendet, wird der Nutzer aufgefordert Werte für diese Parameter einzugeben. Ist dies nicht der Fall wird das Ergebnis der Abfrage direkt in der //Quellcodeansicht// dargestellt.{{lightbox image="data_ldap_query_test_de.png" title="Abfrage ausführen"/}}
nlo 18.2 81 * {{icon name="question"/}}**Abfrageparameter**
gru 32.5 82 Maske zum Eingeben von Werten für Abfrageparameter. Diese Option steht nur zur Verfügung, wenn Abfrageparameter ({{code language="none"}}?{{/code}}) in der LDAP-Abfrage verwendet werden. Die einzelnen Abfrageparameter werden nummeriert im Query dargestellt. Ein Klick auf "Parameter für Abfrage verwenden" {{ficon name="arrow-right-bold-circle-outline2"/}} führt die Abfrage mit den eingebenen Parametern aus. Das Ergebnis wird in der //Quellcodeansicht// dargestellt.
awa 32.2 83 {{lightbox image="data_ldap_query_test_param_de.png" title="Die Paramter der Abfrage werden nummeriert."/}}
84 Eigentliche Abfrage im Editor:{{lightbox image="data_ldap_query_example.png" title="Beispielabfrage"/}}
nlo 18.2 85 * {{icon name="code"/}}**Quellcodeansicht**
awa 32.2 86 Abfrageergebnis im JSON-Format{{lightbox image="data_ldap_query_test_code_de.png" title="Abfrageergebnis im JSON-Format"/}}
nlo 19.1 87 * {{icon name="Terminal"/}}**Generierte LDAP-Abfrage**
awa 32.2 88 Zeigt das generierte LDAP-Statement mit eingefügten Parameterwerten{{lightbox image="data_ldap_query_test_gen_de.png" title="Zeigt den generierten LDAP-Query mit eingefügten Parameterwerten"/}}
nlo 18.2 89
gru 1.1 90 == Beispiele für Abfragen ==
91
gru 32.6 92 Im Folgenden wird gezeigt, wie auf eine LDAP-Abfrage mittels HTTP-Requests zugegriffen werden kann.
gru 1.1 93
gru 32.7 94 Beispielsweise wurde eine LDAP-Abfrage mit dem Namen //MeinAbfrage// angelegt und folgende Abfrage hinterlegt:
gru 1.1 95
gru 32.5 96 {{code language="none"}}
gru 1.1 97 ((distinguishedName=?,?)
98 {{/code}}
99
100 Es müssen zwei Werte für die beiden Platzhalter (Fragezeichen) übergeben werden. Diese Abfrage kann wie folgt aufgerufen werden.
101
gru 32.5 102 {{code language="none"}}
gru 1.1 103 http://<server>/formcycle/datenabfrageldap?name=MeineAbfrage&mandantName=MeinMandant&queryParameter=Wert,1;Wert,2&delimiter=;
104 {{/code}}
105
gru 33.13 106 {{version major="6" minor="6" patch="3"/}}Ab {{formcycle/}} Version 6.6.3 kann die gleiche Abfrage auch folgendermaßen aufgerufen werden, wobei diese Form für neue Projekte empfohlen wird:
gru 33.12 107
108 {{code language="none"}}
109 http://<server>/formcycle/datenabfrageldap?name=MeineAbfrage&mandantName=MeinMandant&queryParameterValues=Wert,1&queryParameterValues=Wert,2
110 {{/code}}
111
awa 33.2 112 Zur Abfrage mittels AJAX aus einem Formular gibt es ein fertige Funktion:
gru 1.1 113
114 {{code language="javascript"}}
awa 33.9 115 $.xutil.getLdapQuery("MeineAbfrage", ["Wert1", "Wert2"])
awa 33.8 116 .then(function(data) {
117 // Rückruf-Funktion, die ausgeführt wird, wenn der Server die Abfrage beanwortet hat
118 // Die Variable data enthält jetzt ein Array mit den Daten
119 console.log(data.length, "Einträge gefunden");
120 })
121 .catch(function(xhr, statusMessage, statusCode) {
122 console.log("Abfrage fehlgeschlagen:", statusMessage, statusCode);
123 // Fehlerbehandlung durchführen...
124 });
awa 33.2 125 {{/code}}
126
gru 33.14 127 Bei dem obigen Code wurde vor {{formcycle/}} Version 6.6.3 immer das Komma als Trennzeichen für die Query-Parameter verwendet. Wenn bei {{formcycle/}} Versionen vor 6.6.3 ein anderes Trennzeichen verwendet werden soll, muss die Abfrage manuell ausgeführt werden:
awa 33.2 128
129 {{code language="javascript"}}
gru 1.1 130 function ldapQuery(name, queryParameter, delimiter, callback) {
131 $.ajax({
132 url: XFC_METADATA.urls.dataquery_ldap,
awa 33.2 133 method: 'GET',
gru 1.1 134 async: true,
135 cache: false,
136 dataType: 'json',
137 data: {
138 name: name,
139 mandantName: XFC_METADATA.currentClient.name,
140 queryParameter: queryParameter,
141 delimiter: delimiter || ','
142 }
awa 33.6 143 }).then(callback);
gru 1.1 144 }
awa 33.2 145
146 ldapQuery("MeineAbfrage", "Wert,1;Wert,2", ";", function(data) {
147 // Zurückgelieferte Daten auswerten...
148 });
gru 1.1 149 {{/code}}
Copyright 2000-2024