SQL-Datenbank

Vielleicht gibt es auf Ihrer Seite schon einen registrierungspflichtigen passwortgeschützten Bereich, zum Beispiel ein Forum. Wenn Sie nun auf die Idee kommen, einen andere Teil der Website für die gleichen Benutzer zugänglich zu machen, stehen Ihnen mehrere Wege offen. Sie könnten alle auffordern, sich nochmal zu registrieren, und diesen Teil mit dateibasierter Zugangskontrolle absichern. Das wäre allerdings nicht so toll, denn dann müssten die Zugangsdaten der Benutzer an zwei Stellen gepflegt werden.

Wenn das Forum schon eine SQL-Datenbank zur Benutzerverwaltung verwendet, können Sie den Apache-Server relativ einfach so einrichten, dass er Namen und Passwort ebenfalls daraus bezieht. Allerdings muss die Methode, den Passwort-Hash zu erzeugen, eine sein, die auch Apache beherrscht, im Beispielfall das gute alte »crypt()« . Zusätzlich müssen Sie die beiden Apache-Module »mod_dbd.so« and »mod_authn_dbd.so« aktivieren. Dazu genügen zwei Zeilen in der Webserver-Konfiguration:

LoadModule dbd_module modules/mod_dbd.so
LoadModule authn_dbd_module modules/↩
mod_authn_dbd.so

Beachten Sie, dass der zweite Wert jeder Zeile ein absoluter oder relativer Pfad zum jeweiligen Modul ist. Der genaue Name hängt von der verwendeten Distribution beziehungsweise Apache-Installation ab.

Wenn die Module geladen sind, fehlt noch die passende Konfiguration, damit Apache die Zugangsdaten aus der Datenbank liest. Mit PostgreSQL sieht das ungefähr so aus wie in Listing 5.

Listing 5

SQL-Authentifizierung

DBDriver pgsql
DBDParams "host=localhost dbname=forum user=apache password=secret"
<Location /forum-users-only>
   AuthType Basic
   AuthName "Forum Users Only"
   AuthBasicProvider dbd
   Require valid-user
   AuthDBDUserPWQuery "SELECT password FROM users WHERE user = %s"
</Location>

Als erstes legen Sie den Datenbank-Treiber fest, in diesem Fall »pgsql« . Für MySQL schreiben Sie an dieser Stelle »mysql« . Apache beherrscht außerdem Oracle und SQLite. Nach dem Treiber folgen die Verbindungsparameter. Für MySQL und PostgreSQL sind das der Datenbank-Host, der Name der Datenbank, der Benutzername und das Passwort.

Die nächsten Zeilen sollten Ihnen langsam bekannt vorkommen. Der einzige Unterschied zu den vorigen Beispielen ist der »AuthBasicProvider« , den Sie nun auf »dbd« einstellen. Am Ende steht der SQL-Code für die Datenbankabfrage. Weil jede Datenbank anders aufgebaut ist, müssen Sie Apache genau sagen, wie es das Passwort ausliest.

LDAP

In vielen Netzwerken läuft heute ein LDAP-Server, der an zentraler Stelle unter anderem die Benutzerdaten führt. Da liegt es nahe, diesen auch zur Authentifizierung passwortgeschützter Bereiche auf dem Webserver zu verwenden. Mit dem Apache-Modul »mod_authnz_ldap« ist das kein großes Problem. Die folgende Konfigurationsanweisung aktiviert das Modul:

LoadModule authnz_ldap_module modules/↩
mod_authnz_ldap.so

Damit Apache davon Gebrauch macht, müssen Sie ihm die LDAP-URL mitteilen:

<Location /content>
  AuthLDAPURL "ldap://ldap1.company.com/ou=↩
  People, o=Company"
  Require valid-user
</Location>

Mit dem Eintrag eines zweiten Servers stellen Sie leicht eine gewisse Ausfallsicherheit her – klarerweise muss dann im Netz auch ein zweiter Server laufen! Die entsprechende Zeile sieht so aus:

AuthLDAPURL "ldap://ldap1.company.com ↩
ldap2.company.com/ou=People, o=Company"

Das LDAP-Modul bietet einige Optionen. Sie können Gruppen-Informationen verwenden oder auch den Zugang in Abhängigkeit von anderen LDAP-Attributen gewähren.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2020