Integration der Zimbra Open-Source Edition mit dem Enterprise Portal

Das Erstellen von Unternehmensportalen ist bei Unternehmen mit einer Vielzahl von Informationssystemen gängige Praxis. Mit einem einzigen Zugriffspunkt auf alle für die Arbeit erforderlichen Ressourcen müssen nicht mehr Dutzende von Lesezeichen verwendet und mehrere Kennwörter berücksichtigt werden, sodass sich die Mitarbeiter des Unternehmens so weit wie möglich auf ihre Arbeit konzentrieren können. Eines der wichtigsten Informationssysteme in diesem Fall ist natürlich das Unternehmenskommunikations- und E-Mail-System, da es praktisch von allen Mitarbeitern des Unternehmens auf die eine oder andere Weise verwendet wird.

Die Zimbra Collaboration Suite Open-Source Edition ist nur eine digitale Workstation, die nicht nur Zugriff auf E-Mails bietet, sondern auch auf digitale Kalender, Aufgabenlisten, Adressbücher und mit Hilfe einer Reihe von Erweiterungen die Zextras Suite Pro sowie die gemeinsame Bearbeitung von Dokumenten für Unternehmen Text- und Video-Chat und persönliches Speicherlaufwerk. Darüber hinaus kann Zimbra OSE problemlos in ein Unternehmensportal integriert werden. Schauen wir uns an, wie dies am Beispiel der Domain company.ru geschehen kann.

Bild

Es gibt zwei Schnittstellen für die Integration von Zimbra OSE in das Unternehmensportal. Die erste, die URL-Oberfläche, besteht darin, einen speziellen Link zu erstellen, auf dessen Grundlage Sie ein Banner erstellen können. Wenn Sie darauf klicken, wird ein autorisierter Benutzer im Unternehmensportal zu seinem Zimbra OSE-Konto umgeleitet und kann seine Aufgaben sicher ausführen. Die zweite basiert auf der Vorautorisierung über die SOAP-Schnittstelle. Die erste Schnittstelle ist die häufigste und wird aufgrund der einfachen Integration in die meisten Webportale verwendet. Die zweite Schnittstelle wird normalerweise für Portale verwendet, bei denen die Erstellung eines Authentifizierungstokens und die Benutzerumleitung gesteuert werden müssen.

In beiden Fällen müssen wir zuerst unsere Mail-Domain vorbereiten. Erstellen Sie dazu einen Vorauthentifizierungsschlüssel. Dies erfolgt mit dem Befehl zmprov generateDomainPreAuthKey company.ru . Die Ausgabe dieses Befehls enthält einen 64- stelligen Schlüssel, der durch zufälliges Generieren und Verschlüsseln von 32 Zeichen erhalten wird, z. B. preAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31 . Dieser Schlüssel kann anschließend mit dem Befehl zimbraPreAuthKey von zmprov gd company.ru erneut angezeigt werden. Danach müssen Sie den Mailserver neu starten, damit die Änderungen wirksam werden.

Lassen Sie uns herausfinden, wie die Vorauthentifizierung mithilfe der URL-Oberfläche implementiert wird. Auf der Grundlage dieses Vorautorisierungsschlüssels erstellen wir eine spezielle URL, unter der sich der Benutzer, der bereits im Unternehmensportal autorisiert ist, bei Zimbra OSE anmelden kann, ohne ein Kennwort eingeben zu müssen. Die URL sieht wie folgt aus: mail.company.ru/service/preauth?{account-identifier{{by-value}{time{expires►►&admin=1{{computed-preauth} .

Die Parameter in dieser URL sind:

  • {account-identifier} und {by-value} , die zur Identifizierung des Kontos benötigt werden. Der erste Parameter gibt seinen Bezeichner und den zweiten Typ dieses Bezeichners an. Wenn der Typ von {by-value} nicht angegeben wird, wird die Authentifizierung nach Namen verwendet.
  • {time} ist ein Zeitstempel, der unter Unix konvertiert wurde
  • {expires} ist die Zeit in Millisekunden, nach der das Authentifizierungstoken abläuft. Wenn als Wert dieses Parameters 0 angegeben wird, wird die Ablaufzeit des Tokens für das Standardkonto verwendet
  • [& admin = 1] Dieser Parameter wird nur benötigt, wenn Sie die Vorauthentifizierung verwenden möchten, um sich nicht nur beim Webclient, sondern auch bei der Administrationskonsole anzumelden. Wenn dieser Parameter angegeben ist, geben Sie ihn bei der Berechnung des HMAC zwischen den Parametern {account-identifier} und {by-value} ein.
  • {computed-preauth} Der berechnete Vorauthentifizierungswert .

Die Berechnung von {computed-preauth} lautet wie folgt:

  1. Sie müssen die Werte {account-identifier}, {by-value}, {time} und {expires} in dieser Reihenfolge zusammenstellen
  2. Richten Sie sie mit einem "|"
  3. Berechnen Sie HMAC mit DomainPreAuthKey
  4. Konvertiert den HMAC-Wert in einen Hexadezimalwert

Zum Beispiel mit folgenden Daten:

  • DomainPreAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31
  • {account-identifier}: manager@company.ru
  • {By-Value}: Name
  • {läuft ab}: 0
  • {time}: 1579862639

Sie können folgende Gruppe von Informationen erstellen: manager@company.ru|name|0|1579862639. Aus dieser Zeile können Sie dann den SHA-1-HMAC berechnen: preauth = hmac ("manager@company.ru|0|1579862639", "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31") ; Als Ergebnis erhalten wir den Wert {computed-preauth} 93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a .

Jetzt verwenden wir es, um die URL zu kompilieren: mail.company.ru/service/preauth?account=manager@company.ru&expires=0×tamp=1579862639&preauth=93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a . Durch Klicken auf diese URL können Sie den Zimbra-Webclient aufrufen und ein Authentifizierungstoken erhalten, ohne einen Kontonamen oder ein Kennwort eingeben zu müssen.

Wenn Sie eine Vorauthentifizierung durchführen möchten, verwenden Sie die Daten " admin@company.ru|1|name|0|1579862639 ", um die HMAC zu berechnen, und geben Sie die URL mail.company.ru/service/preauth?account=admin@company ein .ru & expires = 0 & timestamp = 1579862639 & preauth = 7b410ed71e4eb6c7724598587ae03078bca5e29f & admin = 1

Bei der SOAP-Schnittstelle wird die Standardanforderung AuthRequest verwendet, bei der Vorauthentifizierungsdaten anstelle des Kennworts nach folgendem Muster übertragen werden:

{account-identifier}
{computed-preauth}

Füllen Sie diese Vorlage mit dem Beispiel manager@company.ru:

manager@company.ru
93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a

Danach muss nur noch der Link company.ru/CorpPortal/preauth?isredirect=1&authtoken= {...} mit einem Authentifizierungstoken erstellt werden, mit dem der Benutzer auf den Zimbra-Server umgeleitet und über die bereits bekannte URL-Schnittstelle implementiert wird.

Eine weitere Aufgabe für einen Systemadministrator, der die Vorauthentifizierung von Zimbra auf seinem Unternehmensportal implementiert, besteht darin, die Berechnung des {computed-preauth} -Werts zu automatisieren. Dies kann mithilfe eines Skripts erreicht werden, das automatisch alle erforderlichen Daten ersetzt und am Ausgang einen Link bereitstellt, der für die Vorauthentifizierung bereit ist. Hier einige Beispiele für solche Skripte:

Python / Django

def webmail_redirect(request): from time import time import hmac, hashlib preauth_key = "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31" preauth_url = "http://mail.company.ru/service/preauth" timestamp = int(time()*1000) try: acct = request.user.email pak = hmac.new(preauth_key, '%s|name|0|%s'%(acct, timestamp), hashlib.sha1).hexdigest() return HttpResponseRedirect("%s?account=%s&expires=0&timestamp=%s&preauth=%s"%(preauth_url, acct, timestamp, pak)) except: pass return HttpResponseRedirect("/not_logged_in/") 

Php

 <?php /** *  .     config.inc.php     . */ $PREAUTH_KEY="9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31"; $WEB_MAIL_PREAUTH_URL="http://mail.company.ru/service/preauth"; /** *      .        GET. */ $user = $_GET["user"]; $domain=$_GET["domain"]; $email = "{$user}@{$domain}"; if(empty($PREAUTH_KEY)) { die("Need preauth key for domain ".$domain); } /** *    URL   */ $timestamp=time()*1000; $preauthToken=hash_hmac("sha1",$email."|name|0|".$timestamp,$PREAUTH_KEY); $preauthURL = $WEB_MAIL_PREAUTH_URL."?account=".$email."&by=name&timestamp=".$timestamp."&expires=0&preauth=".$preauthToken; /** *   URL   Zimbra */ header("Location: $preauthURL"); ?> 

Bei allen Fragen zur Zextras Suite können Sie sich per E-Mail an die Vertreterin der Firma "Zextras" Ekaterina Triandafilidi katerina@zextras.com wenden

Source: https://habr.com/ru/post/de485866/


All Articles