«

»

Aug
25

Single Sign on mit Apache und Active Directory

Ziel dieses How-tos ist es, das Mitarbeiter, die mit dem Internet Explorer bzw. Firefox eine Intranet-Seite Abrufen, Authentifiziert werden. Es soll allerdings keine Extra Passwortabfrage kommen sondern bloß überprüft werden, ob sich der User zuvor korrekt an der Windows Domäne angemeldet hat.

Hierzu benutzen wir das Modul mod_auth_kerb, dass automatisch die Credentials vom Browser bezieht.

Integration des Apache Servers ins AD

Das Vorgehen hierfür habe ich in diesem Artikel bereits beschrieben.

Anlegen der Keypass Datei

Am besten legt man sich erstmal einen Service-Benutzer im AD an.

Mit dem Tool “ktpass”, dass man im Windows Ressource Kit findet, wird nun mit dem gerade angelegten Benutzer eine MIT-kompatibles KEYTAB-Datei erzeugt.

1
2
3
4
5
6
7
ktpass
 -princ HTTP/debian.example.org@EXAMPLE.ORG
 -mapuser serviceuser
 -crypto RC4-HMAC-NT
 -pass serviceuserpassword -ptype KRB5_NT_PRINCIPAL
 -mapop set
 -out c:\tmp\debian_rc4.keytab

Ich habe mit hierfür eine batch datei erstellt, um Schreibfehler zu vermeiden. Man sie hier herunterladen.

Kontrolle des SPN

Das Programm KTPASS im vorigen Schritt bindet sowohl den Service Principal Name an das Konto als auch das Kennwort. Mittels ADSIEDIT können Sie gut prüfen, ob diese Änderungen erfolgt sind:

Kopieren Sie anschließend (z.B. mit WinSPC) das ketab file auf das Linuxsystem in den Ordner /etc/apache2/keytab (evtl. anlegen).

Festlegen der Dateirechte:

1
2
chown nobody:nobody debian_rc4.keytab
chmod 400 debian_rc4.keytab

Installieren und einbinden des Moduls

Unter debian denkbar einfach:

1
debian:~# aptitude install libapache2-mod-auth-kerb

Es wird auch direkt in apache eingebunden.

Die Konfiguration der Seite

Man kan die folgenden Einstellungen an verschiedenen Stellen des Apache einfügen. Z.b. in Definition der Seite unter /etc/apache2/sites-enabled oder auch mit Hilfe einer .htaccess datei. (Nicht vergessen “AllowOverride All” zu setzen)

1
2
3
4
5
6
7
8
9
10
11
<Directory "/geheim">
  Allow from all
  AuthName "Kerberos Anmeldung"
  AuthType Kerberos
  KrbAuthRealms EXAMPLE.ORG
  KrbServiceName HTTP/debian.example.org
  Krb5KeyTab /etc/httpd/conf/debian_rc4.keytab
  KrbMethodNegotiate On
  KrbMethodK5Passwd Off
  require valid-user
</Directory>
  • Delicious
  • Facebook
  • Digg
  • Reddit
  • StumbleUpon
  • Twitter

Hinterlasse eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">