Lonzo
LONZO = Linux + Bonzo

LONZO Authorisierung mit Apache LDAP

Der Zugriff auf Lonzo soll in einen (kleinen) öffentlichen Bereich und einen geschützten Bereich unterteilt werden, u.a. im Hinblick darauf, dass Lonzo vom Intranet ins öffentliche Internet wandern soll. Der geschützte Bereich seinerseits kann noch weiter unterteilt werden für spezielle Benutzergruppen.

Grundlage ist die Identifizierung der Lonzo-Anwender. Das nennt der Fachmann die "Authentifizierung", d.h. es wird festgestellt, wer da eigentlcih vor dem Bildschirm sitzt. Das geschieht durch Eingabe von User-Id und Kennwort. Diese werden gegen die in einem Server verwalteten User-Daten verglichen. Wenn alles stimmt, ist der Anwender "authentifiziert", ansonsten "Error 401". Der Apache-Server und der Web-Browser unterstützen dieses Verfahren, das Teil des HTTP ist.

Apache kann nun weiter auf der Grundlage der so festgestellten Identität des Anwenders Zugriff zu bestimmten Ordnern und/oder Dateien auf dem Web-Server zulassen oder verweigern. Dies geschieht auf der Ebene des HTTP-Protokolls durch entsprechende Konfiguration des Apache-Servers.

Verwaltung der User

Die Verwaltung der User, der Passwörter und der User-Gruppen erfolgt ein einem sog. LDAP-Server. Für den Zugriff auf LDAP-Server gibt es fertige Software-Bausteine.

Für den Apache-Server 1.3.x wird das Modul auth_ldap 1.6 von Dave Carrigan verwendet, das auch Bestanteil der SuSE LINUX 8.0 Distribution ist.

Als LDAP-Server wird der vorhandene Lotus-Notes-Server ("Domino Directory") verwendet.

Konfiguration von Apache

Als erstes muss das Modul auth_ldap eingebaut werden. Dafür wird in die Apache-Konfigurationsdatei httpd.conf folgendes eingetragen:

LoadModule  auth_ldap_module /usr/lib/apache/auth_ldap.so

Als zweites muss der Zugriff von Apache auf den LDAP-Server eingestellt werden:

<Directory />
    Options -FollowSymLinks +Multiviews
    AllowOverride None
    AuthName "Lonzo Authentifizierung mit Lotus-User-Id (Vorname blank Nachname) und Lotus-Internet-Passwort"
    AuthType Basic
    AuthLDAPUrl ldap://ln01hh2.gmo.de/o=GMO,c=DE?cn?sub?(objectClass=*)
    AuthLDAPCompareDNOnServer on
    AuthLDAPGroupAttributeIsDN on
</Directory>

Der Text von AuthName erscheint im Eingabefenster des Users.

Die AuthLDAPUrl hat folgende Bewandnis: "ln01hh2.gmo.de" ist der Name des LDAP-Servers, "o=GMO,c=DE" ist der LDAP-Base-DN (distinguished name), "cn" ist das LDAP-Attribut, das als User-Id verwendet werden soll, "sub" bedeutet "Sub-Tree-Suche", "(objectClass=*)" ist ein LDAP-Filter.

Als drittes müssen nun die gewünschten Order und/oder Dateien unter den Zugriffsschutz gestellt werden:

<Directory "/usr/local/httpd/htdocs/lonzo">
    Options Indexes FollowSymLinks
    AllowOverride all
    order allow,deny
    allow from all    
    ErrorDocument 401 /lonzo401.htm
    require valid-user 
</Directory>
<Directory "/usr/local/httpd/htdocs/faxes">
    Options Indexes FollowSymLinks
    AllowOverride none
    order allow,deny
    allow from all
    ErrorDocument 401 /faxes401.htm
    require dn cn=Dietrich Kracht, o=GMO, c=DE
    require dn cn=Melanie Kulbach, o=GMO, c=DE
</Directory>

Offene Punkte

1. Verschlüsselung des Passworts (AuthType Digest)

2. Einsatz von SSL

3. Integration mit Tomcat

4. Sichere Verbindung zwischen Lonzo und dem LDAP-Server

5. Einsatz von Apache 2

6. Berechtigung für LDAP-Gruppen

6. ......