Intégration de Zimbra Open-Source Edition avec Enterprise Portal

La création de portails d'entreprise est une pratique courante parmi les entreprises disposant d'un grand nombre de systèmes d'information. Avoir un point d'accès unique à toutes les ressources nécessaires au travail élimine la nécessité de se confondre dans des dizaines de signets et de garder à l'esprit plusieurs mots de passe, ce qui signifie que les employés de l'entreprise peuvent se concentrer sur leur travail autant que possible. Bien entendu, l'un des principaux systèmes d'information dans ce cas est le système de communication d'entreprise et de courrier électronique, car pratiquement tous les employés de l'entreprise l'utilisent d'une manière ou d'une autre.

Zimbra Collaboration Suite Open-Source Edition est juste un poste de travail numérique qui peut fournir un accès non seulement à la messagerie électronique, mais aussi aux calendriers numériques, aux listes de tâches, aux carnets d'adresses et à l'aide d'un ensemble d'extensions Zextras Suite Pro et à l'édition collaborative de documents, d'entreprise Chat textuel et vidéo et disque de stockage personnel. De plus, Zimbra OSE peut être facilement intégré dans un portail d'entreprise. Voyons comment cela peut être fait en utilisant le domaine company.ru comme exemple.

image

Il existe deux interfaces pour intégrer Zimbra OSE au portail d'entreprise. La première, l'interface URL, consiste à créer un lien spécial, sur la base duquel vous pouvez créer une bannière, lorsque vous cliquez dessus, un utilisateur autorisé sur le portail d'entreprise est redirigé vers son compte Zimbra OSE et peut effectuer ses tâches en toute sécurité. Le second est basé sur une pré-autorisation à l'aide de l'interface SOAP. La première interface est la plus courante et utilisée en raison de la facilité de son intégration avec la plupart des portails Web. La deuxième interface est généralement utilisée avec des portails qui nécessitent un contrôle sur la création d'un jeton d'authentification et une redirection d'utilisateur.

Dans les deux cas, la première chose que nous devons faire est de préparer notre domaine de messagerie. Pour ce faire, créez une clé de pré-authentification. Pour ce faire, utilisez la commande zmprov generateDomainPreAuthKey company.ru . La sortie de cette commande contiendra une clé de 64 caractères, qui est obtenue en générant au hasard 32 caractères et en les chiffrant, par exemple preAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31 . Cette clé peut ensuite être réexaminée à l'aide de la commande zmprov gd company.ru zimbraPreAuthKey . Après cela, vous devez redémarrer le serveur de messagerie pour que les modifications prennent effet.

Voyons comment implémenter la pré-authentification à l'aide de l'interface URL. Ensuite, sur la base de cette clé de pré-autorisation, nous créerons une URL spéciale où l'utilisateur déjà autorisé sur le portail d'entreprise peut se connecter à Zimbra OSE sans avoir à saisir de mot de passe. L'URL ressemblera à mail.company.ru/service/preauth?{account-identifier{{by-value}{time{{expires►►&admin=1{{computed-preauth} .

Les paramètres de cette URL sont:

  • {identifiant de compte} et {par valeur} , qui sont nécessaires pour identifier le compte. Le premier paramètre indique son identifiant, et le deuxième type de cet identifiant. Si le type de {par valeur} utilisé n'est pas spécifié, l'authentification par nom est utilisée.
  • {time} est un horodatage converti sous Unix
  • {expire} est le temps en millisecondes après lequel le jeton d'authentification expire. Si 0 est spécifié comme valeur de ce paramètre, le délai d'expiration du jeton pour le compte par défaut est utilisé
  • [& admin = 1] ce paramètre n'est nécessaire que si vous souhaitez utiliser la pré-authentification pour vous connecter non seulement au client Web, mais également à la console d'administration. Si ce paramètre est spécifié, saisissez-le entre les paramètres {account-identifier} et {by-value} lors du calcul du HMAC.
  • {computed-preauth} La valeur de pré-authentification calculée.

Le calcul de {computed-preauth} est le suivant:

  1. Vous devez rassembler les valeurs {identifiant de compte}, {par valeur}, {heure} et {expire} dans cet ordre
  2. Alignez-les en divisant par un "|"
  3. Calculer HMAC à l'aide de DomainPreAuthKey
  4. Convertir la valeur HMAC en hexadécimal

Par exemple, avoir les données suivantes:

  • DomainPreAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31
  • {identifiant de compte}: manager@company.ru
  • {par valeur}: nom
  • {expire}: 0
  • {time}: 1579862639

Vous pouvez créer l'ensemble d'informations suivant manager@company.ru|name|0|1579862639. Ensuite, à partir de cette ligne, vous pouvez calculer le SHA-1 HMAC: preauth = hmac ("manager@company.ru|0|1579862639", "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31") ; Par conséquent, nous obtenons la valeur {computed-preauth} 93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a .

Nous l'utilisons maintenant pour compiler l'URL: mail.company.ru/service/preauth?account=manager@company.ru&expires=0×tamp=1579862639&preauth=93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676aa . En cliquant sur cette URL, vous pouvez accéder au client Web Zimbra et recevoir un jeton d'authentification sans avoir à saisir de nom de compte ni de mot de passe.

Si vous souhaitez effectuer une pré-authentification, utilisez les données " admin@company.ru|1|name|0|1579862639 " pour calculer HMAC et utilisez l'URL mail.company.ru/service/preauth?account=admin@company pour entrer .ru & expires = 0 & timestamp = 1579862639 & preauth = 7b410ed71e4eb6c7724598587ae03078bca5e29f & admin = 1

Dans le cas de l'interface SOAP, la demande AuthRequest standard est utilisée, dans laquelle les données de pré-authentification sont transmises à la place du mot de passe en utilisant le modèle suivant:

{identifiant de compte}
{pré-calculé)

Remplissez ce modèle avec l'exemple manager@company.ru:

manager@company.ru
93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a

Après cela, il ne reste plus qu'à former le lien company.ru/CorpPortal/preauth?isredirect=1&authtoken= {...} avec un jeton d'authentification qui redirigera l'utilisateur vers le serveur Zimbra et l'implémentera en utilisant l'interface URL que nous connaissons déjà.

Une autre tâche pour un administrateur système implémentant la pré-authentification Zimbra sur son portail d'entreprise est d'automatiser le calcul de la valeur {pré-calcul}. Ceci peut être réalisé en utilisant un script qui remplacera automatiquement toutes les données requises et fournira en sortie un lien prêt pour la pré-authentification. Voici quelques exemples de tels scripts:

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"); ?> 

Pour toutes questions relatives à la Suite Zextras, vous pouvez contacter le représentant de la société "Zextras" Ekaterina Triandafilidi par e-mail katerina@zextras.com

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


All Articles