Als ich im Februar diesen Jahres den Artikel Z-Push Benutzer mittels LDAP begrenzen (ohne Code Modifikation) veröffentlich habe, wurde ich gefragt ob ein ähnliches vorgehen auch für die Zarafa WebApp funktioniert.

Nachdem sich die Mechanismus nicht eins zu eins übernehmen ließ (mittels der vorgeschalteten Authentifizierung wird der Benutzer nicht direkt in der WebApp angemeldet, sondern muss sich noch ein weiteres mal Einloggen), habe ich dies aber leider vorerst verneinen müssen. Die Lösung dieses Problems ist aber im Nachhinein betrachtet denkbar simpel: Die WebApp muss lediglich so konfiguriert werden, dass Sie den Anmeldeinformationen des Webservers vertraut. Und exakt dieser Mechanismus befindet sich  Single Sign-On Umgebungen bereits im Code der WebApp (und auch in dem des WebAccess). Bevor die WebApp Konfiguration aber angepasst werden kann, sollte zuerst sichergestellt werden, dass die Anmeldung über den Apache einwandfrei funktioniert.

Hierfür muss wie bereits beschrieben mod_authnz_ldap aktiviert und anschließend der vHost um die Authentifizierung erweitert werden. Anschließend muss wie im Zarafa Handbuch beschrieben ein Clientzertifikat für die WebApp generiert werden. Dieses wird benötigt um die WebApp gezielt mit Adminprivilegien laufen lassen zu können. Die Alternative hierzu ist den kompletten Webserver als Admin laufen zu lassen, dies ist aber generell nicht zu empfehlen falls weitere Webanwendungen auf dem selben System aktiv sind. Im letzten Schritt wird nun die config.php angepasst. Zuerst muss hier der “DEFAULT_SERVER” auf den https Port des lokalen Zarafa angepasst werden.  Anschließend wird in “SSLCERT_FILE” und “SSLCERT_PASS” das zuvor generierte SSL Clientzertifikat hinterlegt.

// Default Zarafa server to connect to.
define("DEFAULT_SERVER","https://localhost:237/zarafa");

// When using a single-signon system on your webserver, but Zarafa is on another server
// you can use https to access the zarafa server, and authenticate using an SSL certificate.
define("SSLCERT_FILE", "/usr/share/zarafa-webapp/zarafa-client.pem");
define("SSLCERT_PASS", mypassword);

Mit diesen Änderungen erhält der Nutzer nun beim Öffnen von /webapp nun einen Apache Anmeldedialog an dem er sich anmelden kann. Sofern die Anmeldung am Webserver geklappt hat ist der Benutzer direkt in seinem Postfach. Hinweis: beim Kopieren des SSL Zertifikats sollte überprüft werden, ob für den Nutzer des Webservers Leseberechtigungen vorhanden sind.