2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3 <title>2.10. Benutzerauthentifizierung und Administratorpasswort</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.9.2: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. Konfiguration der Hintergrund-Jobs"><link rel="next" href="ch02s11.html" title="2.11. Mandanten-, Benutzer- und Gruppenverwaltung"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.10. Benutzerauthentifizierung und Administratorpasswort</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a> </td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right"> <a accesskey="n" href="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.10. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
4 über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.10.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.10.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>kivitendo verwaltet die Benutzerinformationen in einer
5 Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
6 wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
7 eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
8 können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für kivitendo nur eine einzige
9 Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
10 abgelegt werden.</p><p>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter gegen verschiedene Authentifizierungsmethoden geprüft
11 werden. Dazu zählen die Authentifizierungsdatenbank, LDAP-Server sowie verschiedene Arten von HTTP-Header-basierten Methoden.</p><p>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
12 kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
13 Konfigurationsdatei <code class="filename">config/kivitendo.conf</code>
14 festgelegt. Diese muss bei der Installation und bei einem Upgrade von
15 einer Version vor v2.6.0 angelegt werden. Eine
16 Beispielkonfigurationsdatei
17 <code class="filename">config/kivitendo.conf.default</code> existiert, die als
18 Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.10.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.10.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Administrationsinterface
19 von kivitendo benutzt wird, wird ebenfalls in dieser Datei
20 gespeichert. Es kann auch nur dort und nicht mehr im
21 Administrationsinterface selber geändert werden. Der Parameter dazu
22 heißt <code class="varname">admin_password</code> im Abschnitt
23 <code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.10.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.10.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den
24 Parametern in <code class="varname">[authentication/database]</code>
25 konfiguriert. Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
26 <code class="literal">host</code>
27 </span></dt><dd><p>Der Rechnername oder die IP-Adresse des
28 Datenbankservers</p></dd><dt><span class="term">
29 <code class="literal">port</code>
30 </span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
31 <code class="literal">db</code>
32 </span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
33 <code class="literal">user</code>
34 </span></dt><dd><p>Der Benutzername, mit dem sich kivitendo beim
35 Datenbankserver anmeldet (z.B.
36 "<code class="literal">postgres</code>")</p></dd><dt><span class="term">
37 <code class="literal">password</code>
38 </span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. kivitendo kann sie
39 automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.10.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.10.4. Passwortüberprüfung</h3></div></div></div><p>kivitendo unterstützt verschiedene Module für die Passwortüberprüfung. Welche benutzt wird, regelt der Parameter
40 <code class="varname">module</code> im Abschnitt <code class="varname">[authentication]</code>.</p><p>Dieser Parameter listet die zu verwendenden Authentifizierungsmodule auf. Es muss mindestens ein Modul angegeben werden, es
41 können aber auch mehrere angegeben werden. Weiterhin ist es möglich, das LDAP-Modul mehrfach zu verwenden und für jede Verwendung
42 eine unterschiedliche Konfiguration zu nutzen, z.B. um einen Fallback-Server anzugeben, der benutzt wird, sofern der Hauptserver
43 nicht erreichbar ist.</p><p>Verfügbare Module sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
44 <code class="literal">DB</code>: in Authentifizierungsdatenbank integrierte Benutzerverwaltung</p></li><li class="listitem"><p>
45 <code class="literal">ldap</code>: Bind mit User-Objekten gegen einen oder mehrere LDAP-Server</p></li><li class="listitem"><p>
46 <code class="literal">http_headers</code>: überlässt Authenfizierung vorgelagerten Proxy-Servern übernimmt Usernamen
47 aus mitgeschickten HTTP-Headern</p></li></ul></div><div class="sect3" title="2.10.4.1. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_DB"></a>2.10.4.1. Authentifizierungsdatenbank</h4></div></div></div><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank geprüft werden, so muss der Parameter
48 <code class="varname">module</code> das Modul <code class="literal">DB</code> enthalten. Sofern das Modul in der Liste enthalten ist, egal an welcher
49 Position, können sowohl der Administrator als auch die Benutzer selber ihre Passwörter in kivitendo ändern.</p></div><div class="sect3" title="2.10.4.2. LDAP-Server"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_LDAP"></a>2.10.4.2. LDAP-Server</h4></div></div></div><p>Wenn Passwörter gegen einen oder mehrere externe LDAP- oder Active-Directory-Server geprüft werden, so muss der Parameter
50 <code class="varname">module</code> den Wert <code class="literal">LDAP</code> enthalten. In diesem Fall müssen zusätzliche Informationen über den
51 LDAP-Server im Abschnitt <code class="literal">[authentication/ldap]</code> angegeben werden. Das Modul kann auch mehrfach angegeben werden,
52 wobei jedes Modul eine eigene Konfiguration bekommen sollte. Der Name der Konfiguration wird dabei mit einem Doppelpunkt getrennt an
53 den Modulnamen angehängt (<code class="literal">LDAP:Name-der-Konfiguration</code>). Der entsprechende Abschnitt in der Konfigurationsdatei
54 lautet dann <code class="literal">[authentication/Name-der-Konfiguration]</code>.</p><p>Die verfügbaren Parameter für die LDAP-Konfiguration lauten:</p><div class="variablelist"><dl><dt><span class="term">
55 <code class="literal">host</code>
56 </span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder
57 Active-Directory-Servers. Diese Angabe ist zwingend
58 erforderlich.</p></dd><dt><span class="term">
59 <code class="literal">port</code>
60 </span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
61 <code class="literal">tls</code>
62 </span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
63 Wert auf ‘<code class="literal">1</code>’ setzen, andernfalls auf
64 ‘<code class="literal">0</code>’ belassen</p></dd><dt><span class="term">
65 <code class="literal">verify</code>
66 </span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht und der Parameter <em class="parameter"><code>tls</code></em> gesetzt ist, so gibt dieser
67 Parameter an, ob das Serverzertifikat auf Gültigkeit geprüft wird. Mögliche Werte sind <code class="literal">require</code> (Zertifikat
68 wird überprüft und muss gültig sei; dies ist der Standard) und <code class="literal">none</code> (Zertifikat wird nicht
69 überpfüft).</p></dd><dt><span class="term">
70 <code class="literal">attribute</code>
71 </span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der
72 Benutzer eingegeben hat. Für Active-Directory-Server ist dies
73 meist ‘<code class="literal">sAMAccountName</code>’, für andere
74 LDAP-Server hingegen ‘<code class="literal">uid</code>’. Diese Angabe ist
75 zwingend erforderlich.</p></dd><dt><span class="term">
76 <code class="literal">base_dn</code>
77 </span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
78 Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
79 <code class="literal">filter</code>
80 </span></dt><dd><p>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
81 <code class="literal"><%login%></code>, so wird dieses durch den vom
82 Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
83 der LDAP-Baum nach einem Element durchsucht, bei dem das oben
84 angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
85 <code class="literal">bind_dn</code> und
86 <code class="literal">bind_password</code>
87 </span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
88 durchsucht werden kann (z.B. ist dies bei
89 Active-Directory-Servern der Fall), so kann diese hier angegeben
90 werden. Für Active-Directory-Server kann als
91 ‘<code class="literal">bind_dn</code>’ entweder eine komplette LDAP-DN wie
92 z.B. ‘<code class="literal">cn=Martin
93 Mustermann,cn=Users,dc=firmendomain</code>’ auch nur der
94 volle Name des Benutzers eingegeben werden; in diesem Beispiel
95 also ‘<code class="literal">Martin Mustermann</code>’.</p></dd><dt><span class="term">
96 <code class="literal">timeout</code>
97 </span></dt><dd><p>Timeout beim Verbindungsversuch, bevor der Server als nicht erreichbar gilt; Standardwert: 10</p></dd></dl></div></div><div class="sect3" title="2.10.4.3. HTTP-Header: Username in Header"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_HTTPHeaders"></a>2.10.4.3. HTTP-Header: Username in Header</h4></div></div></div><p>
98 Diese Methode der Authentifizierung überlässt einem vorgelagerten Webserver oder Proxyserver die Authentifizierung. Dazu können
99 SSO-Systeme wie z.B. Authelia oder Authentik zum Einsatz kommen. Die vorgelagerten Server übermitteln dann den Usernamen der
100 authentifizierten Person in einem speziellen HTTP-Header, der an kivitendo durchgereicht wird. Damit kivitendo nicht von
101 beliebigen Quellen aus mit so einem Usernamen aufgerufen werden kann, verlangt kivitendo weiterhin, dass in einem weiteren
102 Header ein Shared Secret übertragen wird. Dieses Secret wird vom Administrator vergeben und sollte nicht weitergegeben werden.
104 Über einen weiteren Header wird wiederum gesteuert, an welchem Mandanten die Anmeldung erfolgt. Dies geschieht über die
105 Datenbank-ID des Mandanten.
107 Um diese Methode zu aktivieren, muss das Authentifizierungsmodul auf <code class="literal">HTTPHeaders</code> gestellt werden. Zusätzlich
108 muss im Abschnitt <code class="literal">authentication/http_headers</code> der Parameter <code class="literal">enabled=1</code> und im Abschnitt
109 <code class="literal">authentication/http_basic</code> der Parameter <code class="literal">enabled=0</code> gesetzt werden. Die folgenden Parameter
110 müssen anschließend im Abschnitt <code class="literal">authentication/http_headers</code> konfiguriert werden:
111 </p><div class="variablelist"><dl><dt><span class="term">
112 <code class="literal">client_id_header</code>
113 </span></dt><dd><p>Name des Headers, in dem das vorgelagerte System die Datenbank-ID des Mandanten überträgt.</p></dd><dt><span class="term">
114 <code class="literal">user_header</code>
115 </span></dt><dd><p>Name des Headers, in dem das vorgelagerte System den Namen des authentifizierten Users überträgt.</p></dd><dt><span class="term">
116 <code class="literal">secret_header</code>
117 </span></dt><dd><p>Name des Headers, in dem das vorgelagerte System das Shared Secret.</p></dd><dt><span class="term">
118 <code class="literal">secret</code>
119 </span></dt><dd><p>Wert des Shared Secrets selber, der vom vorgelagerten System übertragen werden muss, damit die Werte als gültig
120 angesehen werden.</p></dd></dl></div></div><div class="sect3" title="2.10.4.4. HTTP-Header: Basic Authorization"><div class="titlepage"><div><div><h4 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung_HTTPBasic"></a>2.10.4.4. HTTP-Header: Basic Authorization</h4></div></div></div><p>
121 Diese Methode der Authentifizierung überlässt dem Webserver (meist Apache) die Authentifizierung mittels der standardisierten
122 HTTP Basic Authentication (RFC 7617). Dazu muss der Webserver so konfiguriert werden, dass er für alle kivitendo-Requests vom
123 Webbrowser Authentifizierung verlangt. Zusätzlich muss er veranlasst werden, den angegebenen Usernamen auch an kivitendo zu
124 übermitteln. Dies könnte beispielhaft wie folgt aussehen:
125 </p><pre class="programlisting"><Directory /path/to/kivitendo-erp>
127 Options ExecCGI Includes FollowSymlinks
129 # Require authentication from local user file:
132 AuthUserFile /etc/apache2/htpasswd.kivitendo
135 # Pass name of authorized user to kivitendo:
136 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
137 </Directory></pre><p>
138 Um diese Methode zu aktivieren, muss das Authentifizierungsmodul auf <code class="literal">HTTPHeaders</code> gestellt werden. Zusätzlich
139 muss im Abschnitt <code class="literal">authentication/http_basic</code> der Parameter <code class="literal">enabled=1</code> und im Abschnitt
140 <code class="literal">authentication/http_headers</code> der Parameter <code class="literal">enabled=0</code> gesetzt werden.
141 </p></div></div><div class="sect2" title="2.10.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.10.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere kivitendo-Installationen
142 aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
143 Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
144 Parameter <code class="varname">cookie_name</code> im Abschnitt
145 <code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
146 Server existiert.</p></div><div class="sect2" title="2.10.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.10.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
147 <code class="filename">config/kivitendo.conf</code> vorgenommen wurden, muss
148 kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
149 automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
150 der folgenden URL erreichbar sein sollte:</p><p>
151 <a class="ulink" href="http://localhost/kivitendo-erp/controller.pl?action=Admin/login" target="_top">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</a>
152 </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. Konfiguration der Hintergrund-Jobs </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 2.11. Mandanten-, Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>