]> wagnertech.de Git - mfinanz.git/blob - doc/html/ch02s10.html
restart apache2 in postinst
[mfinanz.git] / doc / html / ch02s10.html
1 <html><head>
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>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<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">&lt;%login%&gt;</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.
103           </p><p>
104             Über einen weiteren Header wird wiederum gesteuert, an welchem Mandanten die Anmeldung erfolgt. Dies geschieht über die
105             Datenbank-ID des Mandanten.
106           </p><p>
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">&lt;Directory /path/to/kivitendo-erp&gt;
126   AllowOverride All
127   Options ExecCGI Includes FollowSymlinks
128
129   # Require authentication from local user file:
130   AuthType Basic
131   AuthName "kivitendo"
132   AuthUserFile /etc/apache2/htpasswd.kivitendo
133   Require valid-user
134
135   # Pass name of authorized user to kivitendo:
136   SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
137 &lt;/Directory&gt;</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>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. Konfiguration der Hintergrund-Jobs&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.11. Mandanten-, Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>