Zarafa SSO für Outlook unter UCS 3 (Samba 4)

german

#1

Ich versuche seit einigen Tagen Single-Sign-On für Zarafa (laut Zarafa Administrator Manual, Kap. 6.6.3, “SSO with Kerberos”)
zu konfigurieren.
Soweit ich sehe ist die Zarafa-Konfiguration richtig, die entsprechenden keytabs sind erzeugt und an der richtigen Stelle,
aber SSO funktioniert nicht.

Im Zarafa-Serverlog sehe ich zwar die Versuche der Authentifizierung mit “ntlm_auth”, es gibt aber als Ergebnis ein timeout.
(Zarafa versucht ein ntlm_auth mit: “-d0 --helper-protocol=squid-2.5-ntlmssp”).

Testweise versuche ich auf der commandline ein “ntlm_auth --username=…” und auch dieses schlägt fehl! (Nach Abfrage
des Passworts beendet sich ntlm_auth sofort).

Jetzt die Frage: gibt es bekannte Probleme mit ntlm_auth unter Samba 4 ? google sagt zwar Einiges darüber, aber
keine konkreten Hinweise…

Wenn ntlm_auth und Samba 4 funktionieren sollten… was mache ich dann falsch?

Danke!
Christian


Kopano SSO einrichten
Probleme beim Umstieg von SBS 2003
#2

Ich habe das vor einiger Zeit auf einem Testsystem konfiguriert und zwar mit diesem Skript:

#!/bin/bash -e

eval "$(ucr shell)"

password_zarafa=$(makepasswd --chars=18)
password_http=$(makepasswd --chars=18)

samba-tool user add zarafa-linux $password_zarafa
samba-tool user add http-linux $password_http

cat >/tmp/zarafa-sso.ldif <<__HERE__
dn: CN=zarafa-linux,CN=Users,$samba4_ldap_base
changetype: modify
replace: servicePrincipalName
servicePrincipalName: zarafa/$hostname.$domainname

dn: CN=http-linux,CN=Users,$samba4_ldap_base
changetype: modify
replace: servicePrincipalName
servicePrincipalName: HTTP/$hostname.$domainname
servicePrincipalName: HTTP/$domainname
__HERE__
ldbmodify -H /var/lib/samba/private/sam.ldb /tmp/zarafa-sso.ldif

cat >/tmp/zarafa-sso.ldif <<__HERE__
dn: samAccountName=zarafa-linux,CN=Principals
objectClass: top
objectClass: secret
objectClass: kerberosSecret
privateKeytab: /etc/krb5.keytab
realm: $kerberos_realm
sAMAccountName: zarafa-linux
secret: $password_zarafa
servicePrincipalName: zarafa/$hostname.$domainname
name: zarafa-linux

dn: samAccountName=http-linux,CN=Principals
objectClass: top
objectClass: secret
objectClass: kerberosSecret
privateKeytab: keytab.apache
realm: $kerberos_realm
sAMAccountName: http-linux
secret: $password_http
servicePrincipalName: HTTP/$hostname.$domainname
servicePrincipalName: HTTP/$domainname
name: http-linux
__HERE__

ldbadd -H /var/lib/samba/private/secrets.ldb /tmp/zarafa-sso.ldif

cp /var/lib/samba/private/keytab.apache /etc/apache2/
chmod 400 /etc/apache2/keytab.apache
chown www-data.www-data /etc/apache2/keytab.apache

ucr set repository/online/unmaintained=yes
univention-install libapache2-mod-auth-kerb 
# cat >/etc/apache2/sites-enabled/test <<__HERE__
#<Directory /var/www/private>
#	AuthType Kerberos
#	AuthName "Intranet Login"
#	KrbMethodNegotiate on
#	KrbMethodK5Passwd on
#	KrbVerifyKDC on
#	KrbSaveCredentials off
#	
#	# our keytab
#	Krb5KeyTab /etc/apache2/keytab.apache
#
#	KrbAuthRealms DEADLOCK36.LOCAL
#	Require valid-user
#</Directory>
#__HERE__
cat >/etc/apache2/sites-enabled/zarafa-webaccess <<__HERE__
Alias /webaccess /usr/share/zarafa-webaccess

<Directory /usr/share/zarafa-webaccess/>
        AuthType Kerberos
        AuthName "Intranet Login"
        KrbMethodNegotiate on
        KrbMethodK5Passwd on
        KrbVerifyKDC on
        KrbSaveCredentials off
        Krb5KeyTab /etc/apache2/keytab.apache
        KrbAuthRealms $kerberos_realm
        Require valid-user
</Directory>
__HERE__
/etc/init.d/apache2 restart
# Set the old unmaintained value
ucr set repository/online/unmaintained=$repository_online_unmaintained
apt-get update >/dev/null

sed -i 's|define("LOGINNAME_STRIP_DOMAIN", false);|define("LOGINNAME_STRIP_DOMAIN", true);|' /etc/zarafa/webaccess-ajax/config.php
ucr set zarafa/cfg/server/local_admin_users="root www-data"
service zarafa-server restart

Sofern nur SSO mit Outlook gewünscht ist, kann der webaccess und Apache Part ausgelassen werden.

Nachdem das Skript als root auf einem UCS 3 mit Samba 4 ausgeführt wurde, sollte vom Prinzip her SSO möglich sein.

Vorlage war für meine Tests die Zarafa SSO Anleitung: doc.zarafa.com/6.40/Administrato … h_zcp.html

Vielleicht hilft es ja weiter.

Viele Grüße
Stefan Gohmann


#3

Hallo Herr Gohmann!

Herzlichen Dank für die schnelle Antwort, ich werde das heute mal auf diese Art versuchen.

Nur noch für mein Verständnis: d.h. ich brauche keinen expliziten User im AD anlegen, oder wir der trotzdem benötigt?

Und eine Zusatzfrage noch:
Ich betreibe meine Zarafa-Server als HA-Cluster. Ich nehme an, ich muß die von Ihnen beschriebenen Aktionen
auf beiden Cluster-Nodes durchführen und beim “servicePrincipalName” dann den FQDN der Cluster-IP angeben, richtig?

Viele Grüße,
Christian Masopust


#4

Hallo Herr Gohmann,

ich habe jetzt ihr beschriebenes Setup bei mir ausprobiert und komme aber leider mit dem SSO nicht
weiter. Das Verhalten ist genauso wie wenn ich nach der Original-Anleitung von Zarafa vorgehe.

So wie’s ausschaut, liegt das Problem bei ntlm_auth. Egal was ich versuche, ntlm_auth läuft immer in ein Timeout.
Und wie bereits gesagt, auch ein “ntlm_auth --username=…” funktioniert nicht, es hat den Anschein als würde
ntlm_auth gar nicht mit dem “samba4-winbindd” (samba daemon der die winbind-Funktionalität abbilded) kommunizieren.

Irgendwie bin ich am Ende meiner Weisheit und hoffe verzeweifelt, dass Sie mir noch irgenwie helfen können :slight_smile:

Danke!
Christian Masopust


#5

Wenn UCS 3 mit Samba 4 eingesetzt wird, dann sollte Kerberos verwendet werden. Also in der Zarafa Anleitung “NTLM SSO with ADS” folgen. Das macht das Skript. Vielleicht nochmal mit einem neuen System starten?

Viele Grüße
Stefan Gohmann


#6

Verstehe ich jetzt nicht ganz… Sie schreiben bei UCS mit Samba 4 soll Kerberos verwendet werden und ich soll
der Anleitung “NTLM SSO with ADS” folgen? Irgendwie steh ich auf dem Schlauch :))

Wenn ich der Zarafa-Anleitung “NTLM SSO with ADS” folge, dann brauche ich ja eigentlich auf meinem
Zarafa-Server nichts konfigurieren (Zarafa-Server ist ein Slave-DC, d.h. join ist ja schon erledigt).
Die Beschreibung spricht von Änderungen der smb.conf, allerdings nur für die Versionen 3.x… ist da
bei Samba 4 auch was zu ändern?

Nochmals zum ntlm_auth: ich habe das ntlm_auth auf anderen Slave-DC’s bzw. auch am Master-DC ausprobiert
und auch dort klappt es nicht. Scheint wohl ein generelles Problem in meiner Domaine zu sein, oder?

Danke!
Christian


#7

Hallo,

vielen Dank für Ihre Rückfrage. Um besser und detaillierter auf Ihre Frage eingehen zu können, wenden Sie sich gerne direkt an uns bzw. setzen sich mit unserem Vertrieb in Verbindung +49 421 22232-20 / sales@univention.de.

Viele Grüße
Stephan Luft


#8

Hallo zusammen,

ich habe das ganze für Zarafa Standalone bereits gelöst, unter

https://community.zarafa.com/pg/blog/read/18332/zarafa-outlook-amp-webaccess-sso-with-samba4

findet sich hierzu ein HowTo. Ich habe dieses gerade erfoglreich unter UCS 3.1 implementiert. Bitte folgende Vorbereitungen durchführen:

1. UCR Registry anpassen
In der Univention Configuration Registry ist folgender Schlüssel anzulegen:
Name der Variable: kerberos/defaults/keytab_default
Wert: /etc/zarafa/keytab.zarafa

2.krb5.conf Template anpassen
Die /etc/krb5.conf ist im Prinzip OK, folgende Anpassung in der Datei /etc/univention/templates/files/etc/krb5.confist jedoch erforderlich, damit die Datei automatisiert neu erzeugt werden kann:

Folgendes unterhalb von

[libdefaults] @!@ if configRegistry.has_key('kerberos/realm'): print '\tdefault_realm = %s' % configRegistry['kerberos/realm']

einfügen:

print '\tdefault_keytab_name = %s' % configRegistry.get('kerberos/defaults/keytab_default', '')

3. Create Accounts

7. Anpassung Zarafa Server.cfg
Folgende Anpassungen sind vorzunehmen:

[quote]enable_sso = yes server_hostname = ucs.system-fuchs.eu
ucs.system-fuchs.eu ist dabei durch den FQDN eures UCS zu ersetzen
Anschließed den Zarafa Server neu starten & Outlook mit Single Sign On nutzen.
!!!WICHTIG!!! -> In der Outlook Zarafa Konfig muss natürlich ebenfalls der FQDN eingetragen werden[/quote]

Viele Grüße

Stephan Fuchs