Konzept Single-Sign-On

Transcription

Konzept Single-Sign-On
Konzeptpapier
TYPO3 Single Sign-On mit Kerberos
und LDAP unter Apache / IIS
VERSION 1.0
Herzlichen Dank für Ihr Interesse an Lösungen und Dienstleistungen!
Unser Kontakt für Consulting-Anfragen
internezzo ag, Grundstrasse 14, 6343 Rotkreuz
Kontakt
Funktion
Telefon / Mail
Marcel Burkhalter
Projektleiter TYPO3
+41 41 748 02 41
[email protected]
Copyright © internezzo ag
Inhaltliche Änderungen vorbehalten. Alle Rechte an dieser Dokumentation, insbesondere das Recht
der Vervielfältigung und Verbreitung, bleiben vorbehalten. Kein Teil der Dokumentation darf in
irgendeiner Form ohne vorherige schriftliche Zustimmung der internezzo ag reproduziert werden.
Hinweis: Das Konzeptpapier hat den Stand von April 2008. Die Grundlagen sind noch
dieselben, diverse Details im Konzept sind aber nicht mehr up-to-date.
© internezzo ag 2013
12. Juni 2013 / Seite 2 von 24
Inhaltsverzeichnis
1 Vorwort
5
2 Beschreibung der Lösung
6
2.1 Ablauf für den Benutzer .......................................................................................................... 6
2.2 Technischer Ablauf ................................................................................................................. 6
2.2.1 Apache ............................................................................................................................ 6
2.2.2 Internet Information Services ............................................................................................ 6
3 Voraussetzungen Server & Client
7
3.1 Webserver .............................................................................................................................. 7
3.1.1 Linux ............................................................................................................................... 7
3.1.2 Windows .......................................................................................................................... 7
3.2 Active Directory Server ............................................................................................................ 7
3.3 Firewall / Ports ....................................................................................................................... 7
3.4 Allgemein .............................................................................................................................. 7
3.5 Browser ................................................................................................................................. 8
3.5.1 Firefox ............................................................................................................................. 8
3.5.2 Internet Explorer............................................................................................................... 8
4 Umsetzung / Vorgehen
9
4.1 Konfiguration Active Directory ................................................................................................. 9
4.1.1 Benutzer für Kerberos (nur Apache) ................................................................................... 9
4.1.2 AD Kerberos Benutzers als Keytab exportieren (nur Apache) ................................................ 9
4.1.3 Benutzer für LDAP ............................................................................................................ 9
4.1.4 Active Directory Attribut dSHeuristics ................................................................................ 9
4.2 Konfiguration Webserver ....................................................................................................... 11
4.2.1 Apache .......................................................................................................................... 11
4.2.1.1 Kerberos-Schutz via .htaccess ................................................................................... 11
4.2.1.2 Kerberos-Schutz via httpd.conf .................................................................................. 11
4.2.2 Internet Information Services .......................................................................................... 12
4.3 Konfiguration TYPO3 ............................................................................................................ 13
4.3.1 Extensions ..................................................................................................................... 13
4.3.1.1 ldap_auth ................................................................................................................ 13
4.3.1.2 ldap_server .............................................................................................................. 15
5 Fehlersuche & Tests
19
5.1 Authentifikation.................................................................................................................... 19
5.1.1 Apache (Kerberos) .......................................................................................................... 19
5.1.2 Kontrolle des Benutzernamens in der PHP $_SERVER Variable .......................................... 19
5.2 LDAP ................................................................................................................................... 20
5.2.1 ldapsearch Beispielaufrufe .............................................................................................. 20
6 Glossar und Abkürzungen
21
7 Links
23
7.1
7.2
Kerberos .............................................................................................................................. 23
LDAP ................................................................................................................................... 23
8 Tools
8.1
8.2
8.3
23
Kerberos .............................................................................................................................. 23
LDAP ................................................................................................................................... 23
Diverses ............................................................................................................................... 23
© internezzo ag 2013
12. Juni 2013 / Seite 3 von 24
9 Konditionen Support
9.1
9.2
9.3
9.4
9.5
24
Consulting............................................................................................................................ 24
TYPO3 Extensions ................................................................................................................ 24
Spesenansätze ..................................................................................................................... 24
Zahlungsbedingungen ........................................................................................................... 24
Allgemeines ......................................................................................................................... 24
© internezzo ag 2013
12. Juni 2013 / Seite 4 von 24
1 Vorwort
Da ein Intranet die üblichste Anwendung (wenn auch nicht einzige) für eine SSO Lösung sein
dürfte, wird der Einfachheit halber in diesem Konzept die Bezeichnung "Intranet" allgemein
für die mit SSO zu schützende Seite verwendet.
Das vorliegende Konzept beschreibt die SSO Implementation unter Apache und Internet
Information Services. Da viele Kapitel für Apache und IIS gleichermassen relevant sind, wurde
auf eine Zweiteilung des Dokuments verzichtet.
Dort, wo es Unterschiede gibt, werden diese in separaten Unterkapiteln für Apache und IIS
behandelt. Alle Kapitel ohne diese Unterscheidung gelten für Apache und IIS.
Dieses Konzept ist keine detaillierte Schritt-für-Schritt Anleitung.
Gute Kenntnisse in den Bereichen Active Directory, LDAP, TYPO3 und ein technischer
Background werden vorausgesetzt.
© internezzo ag 2013
12. Juni 2013 / Seite 5 von 24
2 Beschreibung der Lösung
2.1
Ablauf für den Benutzer
 Der Benutzer meldet sich mit seinem Benutzernamen und Passwort an der WindowsDomäne an
 Er startet den Internet Explorer oder Firefox und öffnet die Intranetseite
 Der Benutzer sieht nur Seiten und Inhaltselemente, die seinen Berechtigungen
entsprechen
2.2
Technischer Ablauf
2.2.1 Apache
1. Der Benutzer meldet sich an der Windows-Domäne an. Ab diesem Zeitpunkt ist er
gegenüber dem Active Directory (AD) authentifiziert.
2. Der Benutzer ruft die Intranet Seite auf, welche mittels .htaccess File (AuthType
Kerberos) geschützt ist.
3. Der Server meldet: 401 Authorization Required.
4. Der Client-Browser fordert beim AD ein Service Ticket für "HTTP/intranet.tld" an.
5. Das AD stellt ein Kerberos Service Ticket für den Benutzer aus.
6. Der Browser ruft die ursprüngliche Seite erneut auf und überträgt das Kerberos Ticket via
SPNEGO in den HTTP Headers.
7. Der Webserver kann das Ticket anhand seiner lokalen Keytab (exportiert aus dem AD)
authentifizieren, ohne mit dem AD kommunizieren zu müssen.
8. Das Apache Modul "mod_auth_kerb" speichert den AD Benutzernamen in der Form
"username@REALM" in der Variabel: $_SERVER['REMOTE_USER']
9. Der Webserver gibt den Zugriff für den Benutzer frei.
10. Die TYPO3 Extension "ldap_auth" setzt den Benutzer auf "authorisiert" und gibt den
Benutzernamen (ohne @REALM) weiter an "ldap_sync".
11. Die LDAP Sync Extension sucht den Benutzer via LDAP im AD. Falls der Benutzer
gefunden wird, wird automatisch ein TYPO3 Frontend Benutzer angelegt bzw.
aktualisiert, falls dieser schon vorhanden ist. Bei diesem Sync-Vorgang können diverse
Felder aus dem AD wie Vorname, Telefon, E-Mail etc. in den FE Benutzer übernommen
werden. Die Benutzergruppen aus dem AD werden ebenfalls synchronisiert, was den
Zugriff des Benutzers auf Seiten und Inhaltselemente im TYPO3 steuert.
12. Der synchronisierte FE Benutzer wird automatisch eingeloggt.
13. Der Single Sign-On Vorgang ist abgeschlossen. Der Benutzer sieht beim Surfen im
Intranet nur Seiten/Inhaltselemente, die für alle sichtbar sind und zusätzlich geschützte
Elemente, auf die er Zugriff hat.
2.2.2 Internet Information Services
Der Ablauf mit IIS ist weitgehend identisch mit dem Ablauf unter Apache. Der grösste
Unterschied liegt zwischen Punkt 4 und 8. Hier findet mit IIS eine NTLM anstatt einer
Kerberos Authentifizierung statt.
Das Ergebnis ist dasselbe. Der AD Benutzername ist anschliessend in einer PHP Variabel
gespeichert und kann zur LDAP Synchronisation verwendet werden.
© internezzo ag 2013
12. Juni 2013 / Seite 6 von 24
3 Voraussetzungen Server & Client
3.1
Webserver
3.1.1 Linux
 Betriebssystem: Linux Derivat (wir empfehlen Fedora oder Red Hat Enterprise)
 Webserver: Apache mit Modul "mod_auth_kerb"
 PHP mit geladener LDAP Extension
 OpenLDAP (inkl. "openldap-clients") installiert für Shell-Tests mit dem Tool "ldapsearch"
3.1.2 Windows
 Betriebssystem: Windows 2003 Server
 Webserver: Internet Information Services (Version >= 6.x)
3.2
Active Directory Server
 Active Directory mit Attribut "dSHeuristics = 0000002"
Konfiguration siehe Kapitel 4.1.4
 Windows 2003 Server Support Tools (nicht SP1!) installiert
3.3
Firewall / Ports
 Der Webserver braucht mind. über den LDAP Port 389 Zugriff auf den Active Directory
Server
 Für Kerberos Passwort Abfragen (Benutzer ohne Kerberos Ticket) muss zusätzlich Port 88
offen sein. In diesem Fall ist HTTPS dringen zu empfehlen, da sonst AD Passwörter
unverschlüsselt übertragen werden!
3.4
Allgemein
 Kerberos ist zeitsensitiv. Alle involvierten Server und Clients sollten via NTP ihre
Systemzeit mit einer zuverlässigen Quelle synchronisieren (z.B. ntp.metas.ch)
 Kerberos ist sensibel in Bezug auf DNS. Die Intranet-Domain sollte von allen Servern und
Clients aus vorwärts und rückwärts auflösen (rückwärts nur ein Domainname!)
© internezzo ag 2013
12. Juni 2013 / Seite 7 von 24
3.5
3.5.1
Browser
Firefox
 In den Optionen (URL "about:config" in der Adresszeile) muss die Intranet URL bei den
folgenden beiden Werten hinzugefügt werden:
network.negotiate-auth.trusted-uris
network.negotiate-auth.delegation-uris
3.5.2
Internet Explorer
 Die Intranet URL muss in der Sicherheitszone "Lokales Intranet" hinzugefügt werden. Am
einfachsten wird dies auf den Clients via Logonscript für alle Domänen-Benutzer gesetzt
 In der Sicherheitsstufe der Zone "Lokales Intranet" muss die Option "Automatisches
Anmelden nur in der Intranetzone" gesetzt sein (normalerweise ist dies schon so)
 In den erweiterten Internetoptionen muss die Option "Integrierte WindowsAuthentifizierung aktivieren" gesetzt sein (normalerweise ist dies schon so)
© internezzo ag 2013
12. Juni 2013 / Seite 8 von 24
4 Umsetzung / Vorgehen
4.1
Konfiguration Active Directory
4.1.1 Benutzer für Kerberos (nur Apache)
Für Kerberos Authentifizierungen mit Apache muss im AD ein Benutzer angelegt werden. Von
diesem Benutzer wird im nächsten Kapitel eine "keytab" Datei exportiert. Anhand dieser Datei
ist das Apache Modul "mod_auth_kerb" später in der Lage, das Kerberos Ticket des Benutzers
offline zu validieren.
4.1.2 AD Kerberos Benutzers als Keytab exportieren (nur Apache)
Beispielaufruf von ktpass.exe zum Export des Keytab Files:
"C:\Program Files\Support Tools\ktpass.exe" -princ HTTP/intranet.tld@REALM -mapuser
DOMAIN\KERB -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass
einPasswort -out C:\temp\intranet.keytab
Hinweise:
 ktpass.exe ist Bestandteil der "Windows 2003 Server Support Tools" (siehe Kapitel 3.2)
 Der Kerberos Benutzername in diesem Beispiel lautet "KERB"
 Die Bezeichnung des Service Principals "HTTP/intranet.tld@REALM" muss absolut korrekt
sein. Um dies sicherzustellen, kann man die Kerberos Ticket Anforderung auf einem Client
mittels Wireshark (siehe Kapitel 5.1.1) aufzeichnen und die Bezeichnungen überprüfen.
 Die exportierte Datei "intranet.keytab" muss auf den Webserver kopiert und der absolute
Pfad im .htaccess File definiert werden (siehe Kapitel 4.2.1.1)
4.1.3 Benutzer für LDAP
Für die LDAP Abfragen aus TYPO3 sollte ein separater Benutzer im AD angelegt werden. Der
Benutzer benötigt keine speziellen Berechtigungen.
Benutzername und Passwort werden später im "LDAP server" Datensatz im TYPO3 eingetragen
(siehe Kapitel 4.3.1.2).
4.1.4 Active Directory Attribut dSHeuristics
Gemäss Microsoft braucht es das Attribut "dSHeuristics = 0000002", damit anonyme LDAP
Abfragen beantwortet werden. Die LDAP Abfragen aus TYPO3 erfolgen jedoch mit
Benutzernamen und Passwort, weshalb es dieses Attribut eigentlich nicht brauchen sollte.
Unsere Erfahrung hat jedoch gezeigt, dass ohne dieses Attribut keine LDAP-Suche über das
ganze AD bzw. keine LDAP Suchfilter mit mehr als 2 AND Verknüpfungen möglich sind.
Um die LDAP Synchronisation in TYPO3 intelligent zu filtern, sind jedoch mehr als 2 AND
Verknüpfungen nötig, was das Setzen dieses Attributs erforderlich macht.
Da dieses Verhalten vermutlich ein Bug ist, kann es sein, dass dies inzwischen durch
Microsoft behoben wurde. Wir empfehlen daher via "ldapsearch" (siehe Kapitel 5.2) eine
Testabfrage mit mehr als 2 AND Verknüpfungen abzusetzen.
Falls dies funktioniert, muss das Attribut nicht erstellt werden. Wenn eine leere LDAP Antwort
zurückgeliefert wird, muss das Attribut gemäss folgender Anleitung gesetzt werden:
© internezzo ag 2013
12. Juni 2013 / Seite 9 von 24
Attribut erstellen:
1. ldp.exe starten (Start - Ausführen - ldp - OK)
2. Connection - New (Ctrl +N)
3. Bind (Ctrl + B) - User mit AD Administrator-Rechten verwenden - OK
4. Browse - Modify
5. Dn: CN=Directory Service,CN=Windows
NT,CN=Services,CN=Configuration,DC=domain,DC=tld
Attribute: dSHeuristics
Values: 0000002 (inkl. führender Nullen!)
Operation: Replace
6. <Enter> Button klicken
7. <Run> Button klicken
Attribut kontrollieren:
1. Start - Ausführen - Adsiedit.msc
2. Navigieren zu: Dn: CN=Directory Service,CN=Windows
NT,CN=Services,CN=Configuration,DC=domain,DC=tld
3. Kontextmenü - Eigenschaften
4. Attribut sollte mit Wert "0000002" in der Liste erscheinen (siehe Screenshot unten)
Abbildung 1: Eigenschaften auf dem Ast "Directory Service" (Adsiedit.msc)
Weitere Informationen von Microsoft:
http://support.microsoft.com/?scid=kb%3Ben-us%3B326690&x=20&y=14
© internezzo ag 2013
12. Juni 2013 / Seite 10 von 24
4.2
4.2.1
Konfiguration Webserver
Apache
4.2.1.1 Kerberos-Schutz via .htaccess
Unter Apache muss das gesamte Intranet Kerberos geschützt werden. Dazu wird die .htaccess
Datei im Root des Webordners abgelegt.
Beispielkonfiguration:
# KERBEROS AUTHENTIFICATION
AuthType Kerberos
AuthName "Intranet Kerberos Login"
KrbAuthRealms INTRANET.TLD
KrbVerifyKDC on
KrbMethodNegotiate on
KrbMethodK5Passwd off
KrbServiceName HTTP
Krb5Keytab /etc/httpd/conf/intranet.keytab
require valid-user
# KERBEROS AUTHENTIFICATION
Hinweise
Die Option "KrbMethodK5Passwd" muss nur auf "on" sein, falls man Benutzern ohne
Kerberos-Ticket (z.B. mit Mac Workstations) einen Login via Passwort ermöglichen will. Eine
Anmeldung via Kerberos ohne Tickert, aber dafür mit Passwort, ist kein Single Sign-On mehr
und erfordert weitergehende Konfigurationen, als in diesem Konzept beschrieben. Gemäss
unseren Erfahrungen funktioniert eine solche Anmeldung nicht zuverlässig.
4.2.1.2 Kerberos-Schutz via httpd.conf
Unter Angabe einer "Directory" Direktive, kann der Kerberos-Schutz auch im httpd.conf (oder
einer Apache-Konfigurationsdatei, welche im httpd.conf inkludiert wird) platziert werden:
<Directory "/var/www/vhosts/intranet.tld/httpdocs/">
# KERBEROS AUTHENTIFICATION
--> Konfiguration wie bei .htaccess
# KERBEROS AUTHENTIFICATION
</Directory>
© internezzo ag 2013
12. Juni 2013 / Seite 11 von 24
4.2.2 Internet Information Services
Beim IIS genügt es, den anonymen Zugriff auf die Webseite zu deaktivieren. Sofern der
Browser korrekt konfiguriert ist (siehe Kapitel 3.5), erfolgt die Anmeldung automatisch.
© internezzo ag 2013
12. Juni 2013 / Seite 12 von 24
4.3
Konfiguration TYPO3
4.3.1 Extensions
Die vier mitgelieferten LDAP Extensions müssen via Extension Manager in TYPO3 installiert
werden.
Die folgenden Kapitel behandeln die LDAP Extensions, welche konfiguriert oder angepasst
werden müssen. Die restlichen Extensions muss man nur installieren.
4.3.1.1 ldap_auth
Beispielkonfiguration von "ldap_auth" für Frontend Single Sign-On:
Abbildung 2: Optionen der Extension "ldap_auth" im TYPO3 Extension Manager
Die Methode, welche den Benutzernamen (gesetzt durch Kerberos oder NTLM) zur FE
Benutzer Synchronisation und Login weiterreicht, wird in der Datei
"/sv1/class.tx_ldapauth_sv1.php" implementiert. Der Aufruf der Methode wird im LDAP Server
Objekt konfiguriert (siehe Kapitel 4.3.1.2).
© internezzo ag 2013
12. Juni 2013 / Seite 13 von 24
Beispiel-Implementation:
/**
* Function for SSO with Kerberos
*
* The apache module mod_auth_kerb saves the authenticated principal
(username@REALM) in
* the following variable: $_SERVER['REMOTE_USER']
* if the username is found via LDAP, the user record is updated and logged in
* --> Single Sign-On
*
* @param array $data: usually empty
* @param array $conf: usually empty
* @return array sets output for initUser()
*/
function authKerberos($data, $conf = '')
{
$user = array();
// get the authenticated principal
$remoteUser = $_SERVER['REMOTE_USER'];
// debug login without kerberos ticket
if (empty($remoteUser))
{
$remoteUser = t3lib_div::_GET('sso') ? t3lib_div::_GET('sso') .'@DEBUG' : '';
}
if (! empty($remoteUser))
{
// cut off the @REALM part and pass the username along for LDAP synchronisation
// and authorisation
$user['username'] = substr($remoteUser, 0, strrpos($remoteUser, '@'));
$user['authenticated'] = '1';
}
return $user;
}
Hinweise:
 Wenn man einen Zugang zum Intranet ohne Kerberos-Schutz (z.B. für einen IP-Bereich;
nicht Teil dieses Konzepts) einrichtet, kann man mit dem GET Parameter "sso" beliebige
User simulieren. Beispiel: http://intranet.tld/index.php?sso=username
 Unter IIS mit NTLM Authentifizierung wird der Benutzername im Format
"DOMAIN\username" abgelegt. Dementsprechend muss die fett gedruckte Zeile aus dem
Beispiel oben angepasst werden, damit nur der Benutzername weitergereicht wird
© internezzo ag 2013
12. Juni 2013 / Seite 14 von 24
4.3.1.2 ldap_server
 Im Seitenbaum muss ein Sysfolder für die zu synchronisierenden FE Benutzer erstellt
werden.
 Dieser Sysfolder muss auf der Rootseite des Seitenbaums unter "Allgemeine
Datensatzsammlung" ausgewählt werden.
 Im FE Benutzer Sysfolder wird ein Datensatz vom Typ "LDAP server" erstellt. In diesem
Datensatz wird die gesamte LDAP Synchronisation konfiguriert.
Beispielkonfiguration:
Abbildung 3: TYPO3 Datensatz "LDAP server" mit Beispielkonfiguration
© internezzo ag 2013
12. Juni 2013 / Seite 15 von 24
Beispielkonfiguration für Copy&Paste:
Filter for persons:
(&(objectClass=user)(objectClass=person)(!(objectClass=computer))(!(userAcc
ountControl:1.2.840.113556.1.4.803:=2))(sAMAccountName=###USERNAME###))
Configuration:
FEusers = LDAP_SYNC
FEusers {
enable = 1
table = fe_users
basedn = DC=domain,DC=tld
uniqueField = tx_ldapserver_dn
# LDAP synchronisierte Benutzer (von Hand im BE erstellte werden nicht verändert)
# die im Active Directory nicht mehr vorhanden sind werden versteckt (disabled=1)
handleNotFound = 1
handleNotFound {
markHidden = 1
hiddenField = disable
markDeleted = 0
deletedField = deleted
delete = 0
identField = username
}
# ID des Sysfolders in welchem die Benutzer synchronisiert werden
pid = xxx
# nur Benutzer-Accounts (keine Computer etc.) syncen, nur Accounts die nicht
deaktiviert
# sind
# 1.2.840.113556.1.4.803 = LDAP_MATCHING_RULE_BIT_AND
# 2 = ACCOUNTDISABLE (0x0002 Bit-Flag im userAccountControl Feld vom Microsoft
Active
# Directory)
filter =
(&(objectClass=user)(objectClass=person)(!(objectClass=computer))(logonCount>=1)(!(
userAccountControl:1.2.840.113556.1.4.803:=2)))
fields {
username = MAP_OBJECT
username.attribute = sAMAccountName
username.userFunc = tx_ldapserver->getSingleValue
email = MAP_OBJECT
email.attribute = mail
email.userFunc = tx_ldapserver->getSingleValue
name = MAP_OBJECT
name.attribute = cn
name.userFunc = tx_ldapserver->getSingleValue
© internezzo ag 2013
12. Juni 2013 / Seite 16 von 24
title = MAP_OBJECT
title.attribute = mailNickname
title.userFunc = tx_ldapserver->getSingleValue
company = MAP_OBJECT
company.attribute = physicalDeliveryOfficeName
company.userFunc = tx_ldapserver->getSingleValue
disable = MAP_OBJECT
disable.special = setFalse
# HTML Mails as default (for dmail newsletter)
module_sys_dmail_html = MAP_OBJECT
module_sys_dmail_html.special = setTrue
tx_ldapserver_dn = MAP_OBJECT
tx_ldapserver_dn.special = DN
usergroup = MAP_OBJECT
usergroup {
attribute = memberOf
userFunc = tx_ldapserver->getFEGroups
userFunc.pid = 585
}
}
}
FEgroups < FEusers
FEgroups {
table = fe_groups
# Zentrale Ablage der Intranet Benutzergruppen im Active Directory
basedn = OU=Ablage Gruppen,DC=domain,DC=tld
handleNotFound = 0
filter = (&(objectClass=group))
fields >
fields {
title = MAP_OBJECT
title.attribute = cn
title.userFunc = tx_ldapserver->getSingleValue
tx_ldapserver_dn = MAP_OBJECT
tx_ldapserver_dn.special = DN
}
}
FEauth = LDAP_AUTH
FEauth {
enable = 1
table = fe_users
SSO = 1
SSO.10.userFunc = tx_ldapauth_sv1->authKerberos
© internezzo ag 2013
12. Juni 2013 / Seite 17 von 24
sync < FEusers
}
Nach abgeschlossener Konfiguration kann mit dem neuen Web Backend Modul "LDAP Sync"
eine Synchronisation simuliert werden:
Abbildung 4: TYPO3 Backend Modul "LDAP Sync"
Abbildung 5: Beispiel-Ergebnis eines FE Benutzers nach simulierter LDAP Synchronisation
Anhand der Simulation kann kontrolliert werden, ob alle Felder korrekt mit den Daten aus
dem AD befüllt werden. Falls nötig, kann die Konfiguration noch angepasst und erneut
simuliert werden bis alles korrekt ist.
Anschliessend kann ein "Do Sync" durchgeführt werden, wobei dann die Benutzer und
Benutzergruppen effektiv im konfigurierten Sysfolder angelegt werden.
Weil beim ersten Sync Vorgang die Benutzergruppen erst angelegt wurden (die ID ist erst nach
dem Anlegen definiert), kann noch ein zweites Mal synchronisiert werden, damit die
Benutzergruppen-Zuordnungen bei den Benutzern korrekt gesetzt werden.
Diese manuellen Sync Vorgänge dienen vor allem zu Testzwecken. Im laufenden Betrieb
werden Benutzer bei jeder Anmeldung am Intranet automatisch synchronisiert.
© internezzo ag 2013
12. Juni 2013 / Seite 18 von 24
5 Fehlersuche & Tests
5.1
Authentifikation
5.1.1 Apache (Kerberos)
Mit dem Tool "kerbtray.exe" (siehe Kapitel 8.1) können alle Kerberos Tickets, die der Client
PC erfolgreich angefordert hat, eingesehen werden.
Wird das Ticket für SSO nicht ausgestellt, kann die Kommunikation zwischen Server und
Client mit dem Network Protocol Analyzer "Wireshark" (siehe Kapitel 8.3) aufgezeichnet und
ausgewertet werden. Die Antwort des Servers auf eine abgelehnte Ticketanfrage enthält einen
Fehlertext, welcher mit "Wireshark" einfach ausgelesen werden kann:
Abbildung 6: Anzeige eines Kerberos Errors in "Wireshark"
5.1.2 Kontrolle des Benutzernamens in der PHP $_SERVER Variable
Wenn die Authentifikation für das Intranet ohne Passworteingabe funktioniert hat, kann mit
folgendem einfachen PHP Skript kontrolliert werden, ob der Benutzername korrekt in der PHP
Variable $_SERVER gespeichert wurde:
<?php
echo nl2br(print_r($_SERVER, TRUE));
?>
Die Anzeige im Browser sollte so aussehen (Beispiel mit IIS/NTLM, bei Apache/Kerberos wird
der Benutzername nicht mehrfach befüllt):
HTTP_AUTHORIZATION:Negotiate TlRMTVNTUAADAAAAGA...
[AUTH_PASSWORD] =>
[AUTH_TYPE] => Negotiate
[AUTH_USER] => DOMAIN\firstname.lastname
[REMOTE_USER] => DOMAIN\firstname.lastname
[LOGON_USER] => DOMAIN\firstname.lastname
[HTTP_AUTHORIZATION] => Negotiate TlRMTVNTUAADAAAAGA...
© internezzo ag 2013
12. Juni 2013 / Seite 19 von 24
5.2
LDAP
Um den LDAP Zugriff vom Webserver aus auf das AD zu testen, kann man unter Linux den
Shellbefehl "ldapsearch" verwenden.
Für Windows gibt es das Freeware Tool "LDAP Browser" (siehe Kapitel 8.2).
5.2.1 ldapsearch Beispielaufrufe
Die wichtigsten "ldapsearch" Parameter:
-x
Simple Authentifikation (mit Passwort)
-w
Angabe des Passworts
-h
Angabe des Hosts oder IP
-D
AD Benutzer, der für die Abfrage verwendet wird (muss zu -w passen)
-b
Startpunkt im AD Baum für die Abfrage
Anzeigen aller Datensätze (Abfrage ohne Filter):
ldapsearch -x -w password -h 192.168.x.x -D "cn=username,ou=unit,dc=company" -b
"ou=unit,dc=company"
Anzeigen aller Benutzer (Filter: nur Personen, keine Computer):
ldapsearch -x -w password -h 192.168.x.x -D "cn=username,ou=unit,dc=company" -b
"ou=unit,dc=company"
'(&(objectClass=user)(objectClass=person)(!(objectClass=computer)))'
Anzeigen aller aktiven Benutzer (Filter: nur nicht deaktivierte Personen, keine Computer):
ldapsearch -x -w password -h 192.168.x.x -D "cn=username,ou=unit,dc=company" -b
"ou=unit,dc=company"
'(&(objectClass=user)(objectClass=person)(!(objectClass=computer))(!(userAccountCon
trol:1.2.840.113556.1.4.803:=2)))'
Anzeigen eines bestimmten Benutzers (Filter: nur Personen, definierter Accountname):
ldapsearch -x -w password -h 192.168.x.x -D "cn=username,ou=unit,dc=company" -b
"ou=unit,dc=company"
'(&(objectClass=user)(objectClass=person)(!(objectClass=computer))
(sAMAccountName=username))'
© internezzo ag 2013
12. Juni 2013 / Seite 20 von 24
6 Glossar und Abkürzungen
Dieses Glossar soll nur einen groben Überblick bieten. Die meisten Begriffe sind bei
Wikipedia sehr gut beschrieben.
.htaccess File
Apache Konfigurationsdatei welche in beliebigen Verzeichnissen
platziert werden kann. Die Einstellungen vererben sich auf alle
Unterverzeichnisse. In einem .htaccess File kann z.B. ein
Passwortschutz eingerichtet werden.
Active Directory
Verzeichnisdienst von Microsoft mit welchem Benutzer, Computer und
ähnliches verwaltet werden.
AD
siehe Active Directory
HTTP Headers
Kopfdaten die beim Aufruf einer Webseite vor dem Inhalt übertragen
werden. HTTP Header können u.a. Cookiedaten oder auch
Informationen zur Authentifizierung enthalten.
IIS
siehe Internet Information Services
Internet Information
Services
Webserver von Microsoft (beinhaltet weitere Dienste wie FTP, POP3
etc.).
Kerberos
Netzwerk Authentifizierungsverfahren zur sicheren Authentifizierung in
ungesicherten TCP/IP Netzwerken.
Kerberos Ticket
Die Informationspakete, welche Kerberos zwischen Client und Server
zur Authentifizierung austauscht, werden Ticket genannt.
Keytab File
Wird aus dem AD exportiert und enthält die Schlüssel für einen Service
principal. Anhand des Keytab Files können Kerberos Tickets offline
authentifiziert werden.
LDAP
Lightweight Directory Access Protocol. Mit diesem Protokoll kann auf
das Active Directory zugegriffen werden.
NTLM
NT LAN Manager. Proprietäres Authentifizierungsschema von Microsoft.
Kann in einer TYPO3 Single Sign-On Lösung mit IIS als Alternative zu
Kerberos/Apache verwendet werden.
REALM
Administrationsbereich eines Kerberos-Servers. Typischerweise der
Domainname in Grossbuchstaben, z.B. INTRANET.TLD
Service principal
Bezeichnung zur eindeutigen Identifikation eines Kerberos Dienstes,
z.B.: HTTP/[email protected]
Service Ticket
siehe Kerberos Ticket
© internezzo ag 2013
12. Juni 2013 / Seite 21 von 24
Single Sign-On
Verfahren, damit ein Benutzer nach einmaliger Anmeldung alle
Dienste, für die er berechtigt ist, nutzen kann.
SPNEGO
Simple and Protected GSSAPI Negotiation Mechanism. Das SPNEGOProtokoll erlaubt eine Vereinbarung zwischen dem Client (Browser) und
dem Server in Bezug auf das zu verwendende
Authentifizierungsverfahren.
© internezzo ag 2013
12. Juni 2013 / Seite 22 von 24
7 Links
7.1
Kerberos
Using mod_auth_kerb and Windows 2000/2003 as KDC:
http://www.grolmsnet.de/kerbtut/
HTTP-Based Cross-Platform Authentication via the Negotiate Protocol:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/http-sso-1.asp
7.2
LDAP
LDAP Filter:
http://www.tools4ever.com/resources/manual/usermanagement6/LDAP_search__LDAP_Filter.htm
LDAP Query Basics:
http://technet.microsoft.com/de-ch/library/aa996205.aspx
8 Tools
8.1
Kerberos
Apache Modul "mod_auth_kerb":
http://modauthkerb.sourceforge.net/
Tray-Applikation zum Anzeigen von Kerberos Tickets (Windows):
http://www.microsoft.com/downloads/details.aspx?FamilyID=4e3a58be-29f6-49f6-85bee866af8e7a88&displaylang=en
8.2
LDAP
LDAP Browser für (Windows):
http://www.ldapbrowser.com
8.3
Diverses
Network Protocol Analyzer "Wireshark" (Windows, Mac, Linux):
http://www.wireshark.org
© internezzo ag 2013
12. Juni 2013 / Seite 23 von 24
9 Konditionen Support
9.1



Consulting
Unterstützung per E-Mail, Telefon oder Skype
Support mit Remote-Viewer Tool (Übertragung des Bildschirminhalts; in beide Richtungen
möglich)
Kleinste Verrechnungseinheit pro Anfrage: ½h
Pro Stunde: 180.- CHF
9.2




TYPO3 Extensions
Für die Realisierung wurden ausschliesslich die bestehenden, im TER verfügbaren LDAP
Extensions verwendet
In drei der vier Extensions wurden geringfügige Bugfixes und Anpassungen/Erweiterungen
vorgenommen bzw. eine Funktion für die SSO-Authentifizierung implementiert
Da die Extensions dem GPL Lizenzierungsmodell unterliegen, verlangen wir entsprechend
der Philosophie der GPL nichts für unsere Anpassungen an den Extensions. Wir
verrechnen lediglich einen kleinen Betrag für die Dokumentation der Änderungen.
Lieferung der LDAP Extensions als .t3x Dateien inkl. Änderungsdokumentation
Pauschal: 400.- CHF
9.3
-
9.4
-
9.5
-
Spesenansätze
Reisezeit nach Aufwand
Kilometerentschädigung für Anfahrt pro km
120.00
0.85
Zahlungsbedingungen
Die kleinste Verrechnungseinheit beträgt ½ Stunde. Wir bitten Sie, kleinere
Anfragen zusammen zu fassen
Alle Preise in CHF exkl. 7.6% MwSt.
Allgemeines
Die Allgemeinen Geschäftsbedingungen der internezzo ag bilden einen integrierenden
Vertragsbestandteil. Die aktuelle Version der Allgemeinen Geschäftsbedingungen kann
von unserer Website unter www.internezzo.ch heruntergeladen und/oder unter 041 748
02 48 angefordert werden.
© internezzo ag 2013
12. Juni 2013 / Seite 24 von 24