Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Zimbra Forum France 2016 - Netixia

Développement, Zimbra ouvert sur le monde (Netixia)
Découvrez comment Zimbra peut être interfacé avec d'autres applications grâce aux API. Intervenants Frédéric Leguédois, Responsable développement logiciel Netixia-YaZiba.net et Maxime Désécot, Lead développeur Netixia-YaZiba.net

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

Zimbra Forum France 2016 - Netixia

  1. 1. Mkg-fic-presPPTneutreNETIXIAINFRA-20160113-V1 Zimbra ouvert sur le mondeMaxime Désécot – Lead développeur Frédéric Leguedois – Responsable développement #zffr2016
  2. 2. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 2 Zimbra – un rapide aperçu
  3. 3. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 3 Zimbra – quelles perspectives ? Comment intégrer Zimbra Dans son SI ? Comment intégrer son SI Dans Zimbra ?
  4. 4. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 4 Zimbra – ce qu’il faut retenir Zimbra c’est avant tout Une énorme API En webservice
  5. 5. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 5 Zimbra – ce qu’il faut retenir Votre application
  6. 6. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 6 SOAP - définition Le SOAP, Qu’est ce que c’est ?
  7. 7. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 7 SOAP - définition Le SOAP (Simple Object Access Protocol) est un protocole de transmission de messages basé sur le protocole XML-RPC. Protocole de transmission: HTTP Méthode: POST Contenu: XML
  8. 8. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 8 SOAP – intérêt ? Pas lié à un système d'exploitation Pas lié à un langage de programmation
  9. 9. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 9 Structure d’une enveloppe SOAP Zone Header: Authentification + target Zone Body: Actions à exécuter sur le serveur distant <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:zimbra" xmlns:urn1="urn:zimbraAdmin"> <soapenv:Header> <urn:context> <urn:authToken>0_677bf4bad269643d33363a62...</urn:authToken> </urn:context> </soapenv:Header> <soapenv:Body> <urn1:GetAccountRequest attrs=“displayName,sn,givenName,description”> <urn1:account by="name">maxime@domain.com</urn1:account> </urn1:GetAccountRequest> </soapenv:Body> </soapenv:Envelope>
  10. 10. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 10 SOAP – les namespaces Appels administrateur: zimbraAdmin https://monserveurzimbra:7071/service/admin/soap Token d’authentification administrateur Appels utilisateur: zimbraAccount Appels liés au webmail: zimbraMail https://monserveurzimbra/service/soap Token d’authentification utilisateur
  11. 11. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 11 SOAP – XML-RPC Client Zimbra Analyse de la requête Traitement de la commande Récupération du token Analyse de la réponse
  12. 12. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 12 SOAP - AuthRequest <soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/ xmlns:urn="urn:zimbra" xmlns:urn1="urn:zimbraAdmin"> <soapenv:Header> <urn:context> </urn:context> </soapenv:Header> <soapenv:Body> <urn1:AuthRequest name="admin@domain.com" password="secret"> </urn1:AuthRequest> </soapenv:Body> </soapenv:Envelope>
  13. 13. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 13 SOAP - AuthResponse <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <context xmlns="urn:zimbra"> <change token="41948"/> </context> </soap:Header> <soap:Body> <AuthResponse xmlns="urn:zimbraAdmin"> <authToken>0_677bf4bad269643d33363a62...</authToken> <lifetime>43199999</lifetime> </AuthResponse> </soap:Body> </soap:Envelope>
  14. 14. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 14 SOAP - GetAccountRequest <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:zimbra" xmlns:urn1="urn:zimbraAdmin"> <soapenv:Header> <urn:context> <urn:authToken>0_677bf4bad269643d33363a62...</urn:authToken> </urn:context> </soapenv:Header> <soapenv:Body> <urn1:GetAccountRequest attrs="cn,displayName,sn,givenName,description,…"> <urn1:account by="name">maxime@domain.com</urn1:account> </urn1:GetAccountRequest> </soapenv:Body> </soapenv:Envelope>
  15. 15. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 15 SOAP - GetAccountResponse <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <context xmlns="urn:zimbra"> <change token="41948"/> </context> </soap:Header> <soap:Body> <GetAccountResponse xmlns="urn:zimbraAdmin"> <account id="b9f84225-8a8c-4cd6-8ca3" name="maxime@domain.com"> <a n="cn">Maxime Désécot</a> <a n="givenName">Maxime</a> <a n="sn">Désécot</a> <a n="displayName">Maxime Desandco</a> … </account> </GetAccountResponse> </soap:Body> </soap:Envelope>
  16. 16. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 16 SOAP – En pratique ? En pratique, Qu’est-ce qu’on peut en faire ?
  17. 17. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 17 Intégration dans un portail ou un intranet
  18. 18. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 18 Synchroniser un annuaire ou logiciel RH
  19. 19. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 19 Redévelopper l’espace d’administration
  20. 20. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 20 Redévelopper le webmail
  21. 21. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 21 Pratiques courantes asynchrone Zmprov l’outil des administrateurs Zimbra Script de synchronisation des utilisateurs Script de synchronisation des listes de diffusion Script oneshot de provisionning de signature Script oneshot de provisionning de partages automatiques Etc.
  22. 22. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 22 Pratiques courantes asynchrone Zmprov l’outil des administrateurs Zimbra Avantages: Outil maitrisé par les administrateurs zimbra Bonne documentation zmprov help Pratique pour une opération oneshot Inconvénient: Il faut être sur un serveur zimbra Beaucoup de commande zmprov = très long
  23. 23. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 23 Pratiques courantes asynchrone zmprov –f /tmp/mescommandeszimbra TRES RAPIDE ! GESTION DES ERREURS ?
  24. 24. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 24 Intégration synchrone Développement d’une librairie à intégrer à votre logiciel Avantages: Le langage que vous voulez Pas d’attente de traitement, votre logiciel fait l’appel en direct Gestion des erreurs Serveur autre que Zimbra Inconvénients:
  25. 25. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 25 Intégration synchrone Développement d’une librairie à intégrer à votre logiciel Avantages: Le langage que vous voulez Pas d’attente de traitement, votre logiciel fait l’appel en direct Gestion des erreurs Serveur autre que Zimbra Inconvénients: Gestion de l’authentification
  26. 26. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 26 Gestion de l’authentification L’API de Zimbra fonctionne par token d’authentification <AuthResponse xmlns="urn:zimbraAdmin"> <authToken>0_677bf4bad269643d33363a62...</authToken> <lifetime>43199999</lifetime> </AuthResponse> Attention, le token a une durée de vie limité ! Le token s’obtient par identification (login + password)
  27. 27. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 27 Gestion de l’authentification Comment accéder aux requêtes zimbraAccount d’un compte utilisateur sans connaitre son mot de passe ? 1. DelegateAuthRequest 2. Preauth
  28. 28. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 28 Gestion de l’authentification http://wiki.zimbra.com/wiki/Preauth Génération d’une clé unique pour mon domaine Echange de cette clé avec mon application prov> gdpak domain.com preAuthKey: 4e2816f16c44fab20ecdee39fb850c3b0bb54d03f1d8e073aaea376a4f407f0c prov>
  29. 29. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 29 Calcul d’une preauth Pré-requis: L’adresse email du compte utilisateur Un timestamp (pour justifier de la proximité temporelle de la requête) Eventuellement une durée d’expiration (0) HMAC SHA-1 des données utilisant la clé key: 4e2816f16c44fab20ecdee39fb850c3b0bb54d03f1d8e073aaea376a4f407f0c account: john.doe@domain.com by: name expires: 0 timestamp: 1135280708088 preauth = hmac("john.doe@domain.com|name|0|1135280708088", " 4e2816f16c44fab20ecdee39fb850c3b0bb54d03f1d8e073aaea376a4f407f0c "); preauth-value: b248f6cfd027edd45c5369f8490125204772f844
  30. 30. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 30 Calcul d’une preauth en ruby Require “openssl” include OpenSSL include Digest def compute_preauth(name, time_st, authkey) plaintext="#{name}|name|0|#{time_st}" key=authkey hmacd=HMAC.new(key, SHA1.new) hmacd.update(plaintext) return hmacd.to_s end
  31. 31. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 31 Calcul d’une preauth Client Zimbra Analyse de la requête Construction de la preauth Comparaison Preauth client Preauth calculée Envoi du token Construction d’une preauth
  32. 32. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 32 Calcul d’une preauth <urn1:AuthRequest> <urn1:account by="name">maxime@domain.com</urn1:account> <urn1:password>secret</urn1:password> </urn1:AuthRequest> <urn1:AuthRequest> <urn1:account by="name">maxime@domain.com</urn1:account> <urn1:preauth timestamp="1135280708088"> b248f6cfd027edd45c5369f8490125204772f844 </urn1:preauth> </urn1:AuthRequest>
  33. 33. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 33 Preauth – ouverture du webmail https://monwebmail/service/preauth?account=john.doe@domain.com&expires=0& timestamp=1135280708088&preauth=b248f6cfd027edd45c5369f8490125204772f844 Ouverture autologin du webmail
  34. 34. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 34 Les outils du développeur Comment avoir un aperçu des possibilités de l'API SOAP de Zimbra ? Firebug SOAPUI https://monserveurzimbra/service/wsdl/ZimbraAdminService.wsdl https://monserveurzimbra/service/wsdl/ZimbraUserService.wsdl
  35. 35. © Netixia – copyright 2016 www.netixia.fr 16/02/2016 35 Zimbra ouvert sur le monde QUESTIONS ?

×