Zeige letzte Bearbeiter
1 {{content/}}
2
3 {{figure image="single_sign_on_ntlm_de.png" width="600"}}
4 Nutzeroberfläche für die Einstellungen zu {{smallcaps}}Ntlm{{/smallcaps}}. Nur verfügbar, wenn die Lizens dies erlaubt.
5 {{/figure}}
6
7 {{smallcaps}}Ntlm{{/smallcaps}} wird für die Authentifizierung von Formularbenutzern verwendet. Ein typisches Einsatzszenario sind Formulare, die intern von Mitarbeitern eines Unternehmens aufgerufen werden. Über {{smallcaps}}Ntlm{{/smallcaps}} kann das Formular auf die Benutzerdaten des angemeldeten ActiveDirectory zugreifen.
8
9 {{info}}
10 {{smallcaps}}Ntlm{{/smallcaps}} ist nur verfügbar, wenn die Lizenz dies erlaubt.
11 {{/info}}
12
13 == NTLM nutzen ==
14
15 Mit diesem Schalter lässt sich die {{smallcaps}}Ntlm{{/smallcaps}}-Benutzerauthentifizierung für Formulare aktivieren bzw. deaktivieren
16
17 === Mit {{fserver/}} synchronisieren ===
18
19 Wenn dieser Schalter aktiviert ist, wird beim Speichern der Einstellungen die aktuelle Konfiguration auf alle (erreichbaren) {{fserver number="plurar"/}} übertragen.
20
21 === Domain-Controller Host ===
22
23 Host (FQN) des ActiveDirectory Controller für die {{smallcaps}}Ntlm{{/smallcaps}}-Authentifizierung eines Benutzers und die anschließende Ermittlung dessen Daten über {{smallcaps}}Ldap{{/smallcaps}}.
24
25 {{code language="none"}}
26 Beispiel: domain.example.de
27 {{/code}}
28
29 == NTLM-Authentifizierung ==
30
31 Die folgenden Einstellungen sind für die Authentifizierung eines Benutzers mittels {{smallcaps}}Ntlm{{/smallcaps}} notwendig:
32
33 === Hostname des Domain-Controller Hosts ===
34
35 Hostname des Active-Directory-Controller.
36
37 {{code language="none"}}
38 Beispiel: domain
39 {{/code}}
40
41 === Windows-Domainname ===
42
43 Hier können je nach AD verschiedene Schreibweisen des Domainnamen verwendet werden.
44
45 {{code language="none"}}
46 Beispiel: example.de oder example0
47 {{/code}}
48
49 {{info}}
50 Hier muss der Domain-Name angegeben werden, zu denen die zu authentifizierenden Benutzerkonten gehören.
51 Dieser Domain-Name kann sich von der Domäne des Computer-Kontos unterscheiden (Dabei handelt es sich um den NetBIOS-Name des Computers und nicht den DNS-/FQDN-Name).
52
53 Der zu benutzende **Windows-Domainname** lässt sich beispielhaft ermitteln, indem man auf einen in der Domäne angemeldeten Client eine Windows Konsole öffnet (//Start / Ausführen / cmd//) und dort folgenden Befehl eingibt:
54 **echo %userdomain%**
55 {{/info}}
56
57 === Computerkonto ===
58
59 Dieses Computerkonto muss die Berechtigung zu Nutzerverifizierung haben. Hierbei darf es sich **nicht** um ein Active-Directory Nutzerkonto handeln!
60
61 {{info}}
62 Ein Computer-Account ist am '$'-Zeichen im Domain-Namen erkennbar. z.B. example$@domain.de
63 {{/info}}
64
65 Beschreibung für die Vorgehensweise zur Erzeugung eines Computer-Accounts im //Active Directory Server// (externer Link): [[Creating a Computer Account for NTLM Authentication>>https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/layer7-api-management/api-gateway/9-3/policy-assertions/assertion-palette/access-control-assertions/require-ntlm-authentication-credentials-assertion/creating-a-computer-account-for-ntlm-authentication.html||rel="__blank" title="Creating a Computer Account for NTLM Authentication"]]
66
67 === Computerkontopasswort ===
68
69 Passwort des Computerkontos
70
71 == LDAP-Benutzersuche ==
72
73 Die folgenden Einstellungen sind für eine Nutzersuche nach erfolgter {{smallcaps}}Ntlm{{/smallcaps}}-Authentifizierung notwendig:
74
75 === Port ===
76
77 Der zu verwende Port für die Verbindung mit dem {{smallcaps}}Ldap{{/smallcaps}}-Server zur Nutzersuche
78
79 === SSL-Verbindung ===
80
81 Ermöglich das Aktivierung der SSL-verschlüsselten Kommunikation mit dem {{smallcaps}}Ldap{{/smallcaps}}-Server.
82
83 === Verweis-Sprünge ===
84
85 Gibt die Anzahl der zu folgenden Verweis-Sprünge (Referrals) an. ein Wert von 0 deaktiviert das Folgen von Verweisen.
86
87 === Nutzerkonto (mit Domainangabe) ===
88
89 Konto für die Benutzersuche innerhalb des {{smallcaps}}Ldap{{/smallcaps}}-Servers. Dieses Konto muss entsprechende Rechte für eine Nutzersuche besitzen.
90
91 {{code language="none"}}
92 Beispiel: ldap@example.de
93 {{/code}}
94
95 === Nutzerkontopasswort ===
96
97 Passwort des Nutzerkontos
98
99 === BaseDN für Suche ===
100
101 {{smallcaps}}Ldap{{/smallcaps}} BaseDN unter der die zu authentifizierten Benutzer gesucht werden sollen.
102
103 {{code language="none"}}
104 Beispiel: ou="users", dc="example", dc="de"
105 {{/code}}
106
107 == Einstellungen für Kerberos Authentifizierung ==
108
109 {{figure image="single_sign_on_kerberos_de.png" width="600"}}
110 Nutzeroberfläche für die Einstellungen zu Kerberos. Nur verfügbar, wenn die Lizens dies erlaubt.
111 {{/figure}}
112
113 Kerberos wird für die Authentifizierung von Formularbenutzern verwendet. Ein typischen Einsatzszenario sind Formulare, die "intern" von Mitarbeitern eines Unternehmens aufgerufen werden. In einem nachgeordneten Schritt kann das Formular dann Benutzerdaten des angemeldeten Nutzers aus dem ActiveDirectory bereitstellen.
114
115 Kerberos muss als Lizenz-Option freigeschaltet sein!
116 Ist dies der Fall, können folgende Einstellungen bearbeitet werden:
117
118 === Kerberos nutzen ===
119
120 Mit diesem Schalter lässt sich die Kerberos-Benutzerauthentifizierung für Formulare aktivieren/deaktivieren
121
122 === Mit {{fserver/}} synchronisieren ===
123
124 Wenn dieser Schalter aktiviert ist, wird beim Speichern der Einstellungen die aktuelle Konfiguration auf alle (erreichbaren) {{fserver number="plural"/}} übertragen.
125
126 === Nutzername ===
127
128 Windows Domain Account, welcher für den Zugriff auf das Key Distribution Center (KDC) benötigt wird, um den nachfolgenden Authentifizierungsprozess einzuleiten.
129 In den meisten Fällen ist dies ein User-Account aus dem AD, welcher als Service-Account fungiert und nicht zur Anmeldung an einer Workstation gedacht ist.
130
131 {{info}}
132 Es wird ein Nutzername mit Domainangabe (FQDN) benötigt, wenn in der **krb5.conf** Datei, unter dem Abschnitt //[libdefaults]//, kein **default_realm** definiert ist.
133 //Beispiel: user@EXCAMPLE.COM //
134 {{/info}}
135
136 === Passwort ===
137
138 Passwort des oben genannten Service-Accounts
139
140 === Datei krb5.conf ===
141
142 Hier wird der Inhalt der **krb5.conf** Datei definiert, in welcher die Konfiguration für Kerberos festgelegt werden.
143 Unter anderem werden hier die vom System unterstützten Verschlüsselungsverfahren aufgeführt, sowie der aktuell zu verwendende Realm (Administrationsbereich) und deren Mapping zu einem KDC.
144
145 ==== Dateistruktur ====
146
147 Die zu verwendende Schreibweise innerhalb der Datei orientiert sich an Windows INI-Dateien, das heißt, einzelne Abschnitte werden mit
148 einen Abschnittsnamen (in eckigen Klammern) versehen. Jeder Abschnitt enthält keine oder mehrere Zuordnungen,
149 die in folgender Form definiert werden können:
150
151 {{code language="java" title=""}}
152 foo = bar
153 {{/code}}
154
155 oder
156
157 {{code language="java" title=""}}
158 foobar = {
159 foo = bar
160 some = input
161 }
162 {{/code}}
163
164 ==== Abschnittsnamen ====
165
166 * //[libdefaults]//: Enthält die Einstellungen die von der Kerberos V5-Bibliothek verwendet werden
167 * //[realms]//: Realm-spezifische Kontaktinformationen und Einstellungen
168 * //[domain_realm]// Definiert die Zuordnung von Server Host-Namen zu Kerberos Realms
169
170 ===== [libdefaults] =====
171
172 Der Abschnitt //[libdefaults]// kann folgende Zuordnungen enthalten:
173
174 * **default_realm**: Definiert den standardmäßig zu verwendenden Kerberos Administrationsbereich.
175 * **default_tkt_enctypes**: Definiert eine Liste von unterstützten Sitzungsschlüssel-Verschlüsselungstypen, die der Client anfordern sollte, wenn ein AS (Authentication Server)-Request durchgeführt wird. Die Reihenfolge der einzelnen Typen entspricht ihrer Präferenz vom höchsten zum niedrigsten. Die Werte innerhalb der Liste können mit Komma oder Leerzeichen getrennt werden.
176 * **default_tgs_enctypes**: Definiert eine Liste von unterstützten Sitzungsschlüssel-Verschlüsselungstypen, die der Client anfordern sollte, wenn ein TGS (Ticket Granting Server)-Request durchgeführt wird. Die Reihenfolge der einzelnen Typen entspricht ihrer Präferenz vom höchsten zum niedrigsten. Die Werte innerhalb der Liste können mit Komma oder Leerzeichen getrennt werden.
177 * **permitted_enctypes**: Definiert alle Verschlüsselungstypen, die für den Einsatz in Sitzungsschlüssel-Verschlüsselung erlaubt sind.
178
179 Eine beispielhafte Konfiguration für den //[libdefaults]//-Abschnitt kann folgendermaßen aussehen:
180
181 {{code language="java" title=""}}
182 [libdefaults]
183 default_realm = EXAMPLE.COM
184 default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4-hmac
185 default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4-hmac
186 permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac des-cbc-crc des-cbc-md5 des-cbc-md4 rc4-hmac
187 {{/code}}
188
189 ===== [realms] =====
190
191 Jeder Tag im Abschnitt //[realms]// ist der Name eines Kerberos-Administrationsbereichs (auch 'Realm' genannt). Der Wert der Variablen ist eine Auflistung von Zuordnungen, die die Eigenschaften eines bestimmten Realms definieren. Für jeden Realm können die folgenden Zuordnungen definiert werden:
192
193 * **kdc**: Definiert den Namen oder die Adresse eines Rechners auf dem ein KDC (Key Distribution Center) für diesen Administrationsbereich läuft (Meist ist dies der Server, unter dem das Active Directory erreichbar ist). Es kann eine optionale Port-Nummer, getrennt mit Doppelpunkt, angegeben werden.
194
195 Eine beispielhafte Konfiguration für den //[realms]//-Abschnitt kann folgendermaßen aussehen:
196
197 {{code language="java" title=""}}
198 [realms]
199 EXAMPLE.COM = {
200 kdc = domain.example.com
201 }
202 {{/code}}
203
204 ===== [domain_realm] =====
205
206 Der //[domain_realm]// Abschnitt enthält eine Zuordnung von einem Domain-Namen oder den Hostnamen zu einem Kerberos-Realm-Namen. Der Tag-Name kann ein Host oder Domain-Name sein, wobei Domain-Namen mittels Punkt (.) als Vorzeichen gekennzeichnet sind. Als Wert wird der Name eines Kerberos-Realm für diesen bestimmten Host oder die Domäne erwartet. Host- oder Domain-Namen sollten klein geschrieben werden.
207
208 Eine beispielhafte Konfiguration für den //[domain_realm]//-Abschnitt kann folgendermaßen aussehen:
209
210 {{code language="java" title=""}}
211 [domain_realm]
212 .example.com = EXAMPLE.COM
213 {{/code}}
214
215 === Datei login.conf ===
216
217 Hier wird der Inhalt der **login.conf** Datei definiert und damit welche Authentifizierungstechnologie für Client und Server zu verwenden ist.
218
219 Eine beispielhafte Konfiguration kann folgendermaßen aussehen:
220
221 {{code language="java" title=""}}
222 spnego-client {
223 com.sun.security.auth.module.Krb5LoginModule required;
224 };
225
226 spnego-server {
227 com.sun.security.auth.module.Krb5LoginModule required
228 refreshKrb5Config=true
229 storeKey=true
230 isInitiator=false;
231 };
232 {{/code}}
233
234 === Client-Modulname ===
235
236 Der Name, welcher in der //login.conf// Datei für die Definition der Clients verwendet wird.
237
238 === Name des Server-Moduls ===
239
240 Der Name, welcher in der //login.conf// Datei für die Definition des Servers verwendet wird.
241
242 {{error}}
243 Sollte es bei aktiviertem Kerberos vereinzelt oder dauerhaft zu Fehlern beim Formular-Aufruf kommen (HTTP-Status 400), so überschreitet das Kerberos-Ticket die standardmäßige Größenlimitierung des HTTP-Headers durch den Anwendungsserver (z.B. Tomcat). Eine Lösung bringt die Erhöhung dieser Limitierung welche [[hier>>doc:Formcycle.SystemSettings.TomcatSettings.LimitHTTPHeader]] beschrieben wird.
244 {{/error}}
245
246 == LDAP Benutzersuche ==
247
248 Die nachfolgenden Einstellungen sind notwendig, um Benutzerinformationen vom authentifizierten Nutzer über LDAP (MS Active Directory) zu beziehen.
249 Die ermittelten Benutzer-Stammdaten stehen anschließend im Formular zur Verfügung.
250
251 === Domain-Controller Host* ===
252
253 FQN (Full Qualified Name) und Port des Active-Directory Controllers.
254 Beispiel: domain.example.com Port: 389
255
256 === SSL-Verbindung ===
257
258 Mit diesem Schalter lässt sich festlegen, ob SSL für den Kommunikation mit dem LDAP-Server verwendet werden soll.
259
260 === Verweis-Sprünge* ===
261
262 Gibt die maximale Anzahl von durchzuführenden Verweis-Sprüngen (Referrels-Hops) auf dem LDAP-Server an.
263 Ein Wert von 0 deaktiviert ein Folgen von Verweisen.
264
265 === Nutzer-Account (mit Domainangabe)* ===
266
267 Dieser Account muss das Recht haben, Suchanfragen (Benutzerobjekt) an das Active-Directory zu senden.
268
269 {{info}}
270 Es wird ein Nutzername mit Domainangabe (FQDN) benötigt.
271 //Beispiel: user@EXCAMPLE.COM //
272 {{/info}}
273
274 === Nutzer-Account Passwort* ===
275
276 Passwort für den oben genannten Nutzer-Account.
277
278 === BaseDn für Suche* ===
279
280 LDAP BaseDN unter der der authentifizierte Benutzer gesucht wird.
281 Beispiel: ou="intern", dc="example", dc="com"
282
283 == Ausgelesene LDAP-Nutzerdaten im Designer verarbeiten ==
284
285 Die zum authentifizierten Nutzer ermittelten Eigenschaften aus dem LDAP werden im **XFC_METADATA**-Objekt abgelegt und stehen dadurch im Formular zur Verfügung. Am JSON-Objekt **currentUser** befindet sich die Eigenschaft **ldap**, welche die ermittelten Daten als JSON-Struktur beinhaltet.
286
287 {{info}}
288 Welche Daten die JSON-Struktur unter der **rawData **Eigenschaft beinhaltet, hängt maßgeblich von den Leserechten des LDAP-Accounts ab,
289 welcher die Nutzersuche im LDAP-System durchführt.
290 {{/info}}
291
292 Das nachfolgende JS-Codeschnipsel zeigt einen Zugriff auf die LDAP-Eigenschaft //userPrincipalName// mittels JS im Designer:
293
294 {{code language="javascript"}}
295 try {
296 // Auslesen der Property und Anzeige in einem Label
297 var elem = $('[name=txt1]');
298 var ldap = XFC_METADATA.user.rawData;
299 if(ldap.hasOwnProperty('userPrincipalName')) {
300 elem.html(ldap.userPrincipalName);
301 }
302 } catch (err) {}
303 {{/code}}
Copyright 2000-2025