LDAP Server

LDAP

OpenNewsNetwork benutzt LDAP zur Authentifizierung von Benutzern.

Zunächst braucht man aber ein LDAP-Benutzerkonto mit Administratorrechten, um auf die Benutzerdatenbank von OpenNewsNetwork zugreifen zu können. Derzeit ist Michael Bussmann der erste Anlaufpunkt dafür.

Master & Slave

Es gibt einen primären LDAP-Server. Dieser verteilt seinen Datenstand automatisch an sekundäre Server. Zur Lastverteilung hat Jörn einen DNS-Round-Robin-Namen eingerichtet. Dieser wechselt rythmisch zwischen allen Servern (siehe ).

Master: ldap1.open-news-network.org
DNS-Round-Robin: auth.open-news-network.org

Änderungen von Benutzerkonten müssen am Master gemacht werden. In die readers.conf sollte man aber den DNS-Round-Robin eintragen.

Anlegen neuer Benutzer mit phpLDAPadmin

Am einfachsten geht das durch Duplizieren eines bestehenden Benutzerkontos.

Nach dem Login sieht die letzte Zeile im linken Frame so aus:


dc=open-news-network,dc=org

Durch anklicken wird die dahinter stehende Liste aller Konten aufgeklappt. Einträge, die mit cn= beginnen, haben administrative Rechte. Mit uid= beginnen einfache Benutzer.

Durch Anklicken einer solchen Zeile erhält man im rechten Frame die Details des Benutzerkontos. Durch Copy this entry wird der Eintrag dupliziert. Anschließend ändert man in der Detailansicht des neuen Eintrags.

Für die Kodierung des Passworts wird CRYPT verwendet.

Prüfung des Passworts

phpLDAPadmin bietet dazu in der Detailansicht die Funktion Check password...

Auf der Kommandozeile lässt sich das etwa so machen:


ldapsearch -H ldap://ldap1.open-news-network.org/ -x -D "uid=alexander.bartolich,dc=open-news-network,dc=org" -W

Aufpassen muss man auf die Unterscheidung zwischen cn= und uid=. Dieses Prefix ist Teil des Kontonamens.

Einführung in die Welt der Kommandozeile

Das Paket ldap-utils enthält einige Werkzeuge zum Anlegen, Ändern und Löschen von Einträgen in der LDAP-Datenbank. Ihre Anwendung erfordert allerdings recht lange Kommandozeilen. Dahinter steckt aber ein System.

Distribution Paket
Debian 4 ldap-utils
Fedora 10 openldap-clients
Ubuntu 8.04 ldap-utils

Login

In der LDAP-Terminologie wird statt »Login« der Begriff »Bind« verwendet. Die Funktionalität ist aber die selbe: man präsentiert Benutzernamen und Passwort und erhält dafür Zugang. Das verwirrende dabei ist sind die extrem langen Benutzernamen und die Vielfalt der Authentisierungsverfahren, die LDAP unterstützt. Im OpenNewsNetwork sieht der Login immer so aus:


-x -D "cn=admin,dc=open-news-network,dc=org" -W
^^^^^^^^

Der unterstrichene Teil ist variabel, der Rest konstant. Achtung: cn=admin und uid=admin sind zwei verschiedene Konten.

searchbase

Momentan ist die Benutzerliste von OpenNewsNetwork flach. Es gibt nur einen sinnvollen Startpunkt für Suchoperationen mit ldapsearch. Allerdings erhält man kein Ergebnis, wenn man diesen Punkt vergisst.

-b 'dc=open-news-network,dc=org'

Am besten konfiguriert man diese Einstellung darum fix in /etc/ldap/ldap.conf. Es reicht eine Zeile:

BASE dc=open-news-network,dc=org

ldapuri

Mit dieser Option wählt man Rechnernamen und Portnummer des zu bearbeitenden LDAP-Servers.

-H ldap://ldap1.open-news-network.org

Diese Einstellung lässt sich ebenfalls fix in /etc/ldap/ldap.conf einstellen.

URI ldap://ldap1.open-news-network.org

Konkrete Beispiele auf der Kommandozeile

Die folgenden Beispiele setzen vernünftige Werte für BASE und URI in der Datei /etc/ldap/ldap.conf voraus. Im einfachsten Fall:

BASE dc=open-news-network,dc=org
URI ldap://ldap1.open-news-network.org

Der Benutzer cn=ICH_DARF_DAS steht für ein Administrator-Konto, der Teilnehmern des OpenNewsNetwork eingerichtet wird (siehe oben). Der Benutzer uid=TESTUSER steht für das Konto eines normalen Benutzers.

Ändern eines Passworts

Die folgende Zeile generiert ein zufälliges Passwort, schreibt es auf die Standardausgabe, und setzt es.

ldappasswd -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W "uid=TESTUSER,dc=open-news-network,dc=org"

Hängt man die Option -S an, kann man das Passwort auch interaktiv eingeben.

Alle Konten auflisten (LDIF-Export)

ldapsearch -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W

Anlegen eines Benutzer

ldapadd -x -D "cn=ICH_DARF_DAS,dc=open-news-network,dc=org" -W -f BENUTZER.ldif

Wobei die Datei BENUTZER.ldif so aussieht:

dn: uid=irgendwer@irgendwo.xyz,dc=open-news-network,dc=org
cn: Example
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
ou: People
uid: irgendwer@irgendwo.xyz
givenName: Manfred Mustermann
sn: ManfredMustermann

Als User ID fungiert eine gültige E-Mail-Adresse. Das Attribut sn unterscheidet sich von givenName durch dir entfernten Leerzeichen. Das Passwort wird in einem zweiten Arbeitsgang mit ldappasswd gesetzt. Auf diese Weise landet dann ein Hash in der LDAP-Datenbank, nicht das Passwort im Klartext.

Nicht definiert