Modifications entre les versions 14 et 15
Version 14 à la date du 2015-08-20 19:09:09
Taille: 6111
Éditeur: MoussaNombre
Commentaire: Aucunement besoin des dossiers 64bits
Version 15 à la date du 2015-08-21 21:40:18
Taille: 6720
Éditeur: MoussaNombre
Commentaire: Mise à jour
Texte supprimé. Texte ajouté.
Ligne 118: Ligne 118:
 * `/etc/pam.d/dovecot`
 * Patcher Dovecot (version 2.1.7) pour agrandir la taille du buffer de connexion
  * récupérer le paquet source : `mnombre@sogo-test-saml:~/dovecot$ dget http://http.debian.net/debian/pool/main/d/dovecot/dovecot_2.2.13-11~bpo70+1.dsc`
   . En cas d'erreur {{{
dscverify: dovecot_2.1.7-7+deb7u1.dsc failed signature check:
gpg: Signature faite le dim 08 jun 2014 10:33:54 EDT avec la clef RSA d'identifiant 1343CF44
gpg: Impossible de vérifier la signature : clef publique introuvable
Validation FAILED!!
}}} ajouter {{{
DSCVERIFY_KEYRINGS=$HOME/.gnupg/pubring.gpg
DGET_VERIFY=no
}}} dans le fichier ~/.devscripts)
  * mettre [[attachment:auf_saml.patch|le patch]] dans le dossier des patchs Debian : `mnombre@sogo-test-saml:~/dovecot$ cd dovecot-2.2.13/ ; cp ../auf_saml.patch debian/patches/`
  * déclarer notre patch dans le fichier de suivi de Debian : `mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ echo "auf_saml.patch" >> debian/patches/series`
  * mettre à jour le changelog `mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ dch -l ~auf1`
  * reconstruire les paquets Debian : `mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ debuild -us -uc`
  * réinstaller les paquets : `mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ sudo debi`

 * Intégrer SAML dans pam : modifier le fichier `/etc/pam.d/dovecot`
Ligne 128: Ligne 146:
Ligne 130: Ligne 147:

 * Patcher Dovecot (version 2.1.7) pour agrandir la taille du buffer de connexion
  * récupérer le paquet source {{{
root@sogo-test-saml:~# echo "deb-src http://ftp2.ca.debian.org/debian wheezy main contrib" >> /etc/apt/sources.list
root@sogo-test-saml:~# apt-get update
root@sogo-test-saml:~# apt-get source dovecot-core
root@sogo-test-saml:~# cd dovecot-2.1.7
}}}
  * appliquer le [[attachment:auf-saml.patch|patch]] `root@sogo-test-saml:~# patch -p1 < /root/auf-saml.patch`
  * mettre à jour le changelog `root@sogo-test-saml:~# dch -l ~auf7`
  * commiter les changements `dpkg-source --commit`
  * reconstruire les paquets Debian : `debuild -us -uc`
  * réinstaller les paquets : `debi`

Tests d'intégration SOGo et SAML

Serveur de test

  • copie du CT sogo-test.ca.auf.org ==> sogo-test-saml.ca.auf.org

  • installation en local de : dovecot-imapd (1:1.2.15-7) + postfix
  • sogo : 2.2.16-1

Configuration de SOGo

  • modification de la config SOGo :
    •   /* SAML */
          SOGoAuthenticationType = saml2;
          SOGoSAML2CertificateLocation = "/etc/ssl/certs/saml-sogo-test-saml.ca.auf.org-cert.pem";
          SOGoSAML2PrivateKeyLocation = "/etc/ssl/private/saml-sogo-test-saml.ca.auf.org-key.pem";
      
          SOGoSAML2IdpCertificateLocation = "/etc/ssl/certs/GandiStandardSSLCA.pem";
          SOGoSAML2IdpMetadataLocation = "/etc/ssl/saml-id.auf.org-metadata.xml";
          SOGoSAML2IdpPublicKeyLocation = /etc/ssl/certs/_.auf.org-cert.pem;
      
          SOGoSAML2LogoutEnabled = YES;
          SOGoSAML2LogoutURL = "http://sogo.auf.org";
  • Adapter les droits

    chgrp sogo /etc/ssl/private/saml-sogo-test-saml.ca.auf.org-key.pem
    chmod g+r /etc/ssl/private/saml-sogo-test-saml.ca.auf.org-key.pem
    adduser sogo ssl-cert
  • restart de SOGo

Compilation de Lasso et CrudeSAML

  • lasso (on appliquera le patch de Wolfgang)

    • pré-requis :
      • aptitude install zlib1g-dev
      • aptitude install pkg-config
      • configure: error: Package requirements (glib-2.0 >= 2.4.0 gobject-2.0 >= 2.4.0 libxml-2.0 xmlsec1 >= 1.2.6 xmlsec1-openssl >= 1.2.6 openssl) were not met :

        • aptitude install libglib2.0-dev (==> glib-2.0 >= 2.4.0 gobject-2.0)

        • aptitude install libxmlsec1-dev ==> libxml-2.0 xmlsec1 >= 1.2.6 xmlsec1-openssl >= 1.2.6 openssl

    • appliquer le patch de Inverse : patch -p0 < lasso-export.diff

    • ./configure ; make ; make install (lire le INSTALL)

  • crudesaml (http://ftp.espci.fr/pub/crudesaml/crudesaml-1.4.tar.gz)

    • pré-requis :
      • aptitude install libsasl2-dev
      • aptitude install libpam0g-dev
      • modif du fichier plugin_common.h
        • #include <saslplug.h> :
          +typedef int (*sasl_callback_ft)(void);
    • patch apporté par JC
      2ème problème : il y avait un souci dans l'interprétation des dates SAML par le module PAM. Nous avons « hacké » ça en quelques lignes de code C pour supprimer automatiquement les microsecondes quand elles sont présentes : elles ne sont pas vraiment utiles et elles ne sont pas comprises par la fonction C "strptime".
    • L'erreur rencontrée est la suivante

      Aug 19 15:45:32 sogo-test-saml auth: SAML assertion AuthnStatement AuthnInstant = -1
      Aug 19 15:45:32 sogo-test-saml auth: invalid authn AuthnInstant 2015-08-19T19:40:40.652611Z
      root@sogo-test-saml:/# git diff usr/local/src/crudesaml-1.4/saml.c
      diff --git a/usr/local/src/crudesaml-1.4/saml.c b/usr/local/src/crudesaml-1.4/saml.c
      index 415479a..f3121bb 100644
      --- a/usr/local/src/crudesaml-1.4/saml.c
      +++ b/usr/local/src/crudesaml-1.4/saml.c
      @@ -153,9 +153,15 @@ saml_get_date(date)
              struct tm tm;
              const char *format = "%Y-%m-%dT%TZ";
       
      -       if (strptime(date, format, &tm) == NULL)
      -               return (time_t)-1;
      +        char *date2 = strdup(date);
      +        if (strchr(date2,'.') != NULL && strchr(date2,'Z') != NULL)
      +               strcpy(strchr(date2,'.'), strchr(date2,'Z'));
       
      +       if (strptime(date2, format, &tm) == NULL){
      +               free(date2);
      +               return (time_t)-1;
      +       }
      +       free(date2);
              return (timegm(&tm));
       }
       
      root@sogo-test-saml:/#
    • ./configure && make && make install
    • les librairies aux bons endroits :
      • root@sogo-test-saml:/usr/lib/sasl2# chmod -x /lib/sasl2/*.so*
        root@sogo-test-saml:/usr/lib/sasl2# cp -aiv /lib/sasl2/*.so* /usr/lib/i386-linux-gnu/sasl2/
        root@sogo-test-saml:/usr/lib/sasl2# chown root:root /usr/local/lib/security/*.so*
        root@sogo-test-saml:/usr/lib/sasl2# chmod -x /usr/local/lib/security/*.so*
        root@sogo-test-saml:/usr/lib/sasl2# cp -aiv /usr/local/lib/security/pam_saml.so.0.2.0 /lib/i386-linux-gnu/security/pam_saml.so
    • vérification
      • root@sogo-test-saml:/usr/lib/sasl2# aptitude install sasl2-bin
        root@sogo-test-saml:/usr/lib/sasl2# saslpluginviewer
        Plugin "saml" [loaded],         API version: 4
                SASL mechanism: SAML, best SSF: 0
                security flags: NO_ANONYMOUS
                features: WANT_CLIENT_FIRST|PROXY_AUTHENTICATION

Dovecot pour authentification SAML

  • Patcher Dovecot (version 2.1.7) pour agrandir la taille du buffer de connexion
    • récupérer le paquet source : mnombre@sogo-test-saml:~/dovecot$ dget http://http.debian.net/debian/pool/main/d/dovecot/dovecot_2.2.13-11~bpo70+1.dsc

      • En cas d'erreur

        dscverify: dovecot_2.1.7-7+deb7u1.dsc failed signature check:
        gpg: Signature faite le dim 08 jun 2014 10:33:54 EDT avec la clef RSA d'identifiant 1343CF44
        gpg: Impossible de vérifier la signature : clef publique introuvable
        Validation FAILED!!

        ajouter

        DSCVERIFY_KEYRINGS=$HOME/.gnupg/pubring.gpg
        DGET_VERIFY=no
        dans le fichier ~/.devscripts)
    • mettre le patch dans le dossier des patchs Debian : mnombre@sogo-test-saml:~/dovecot$ cd dovecot-2.2.13/ ; cp ../auf_saml.patch debian/patches/

    • déclarer notre patch dans le fichier de suivi de Debian : mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ echo "auf_saml.patch" >> debian/patches/series

    • mettre à jour le changelog mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ dch -l ~auf1

    • reconstruire les paquets Debian : mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ debuild -us -uc

    • réinstaller les paquets : mnombre@sogo-test-saml:~/dovecot/dovecot-2.2.13$ sudo debi

  • Intégrer SAML dans pam : modifier le fichier /etc/pam.d/dovecot

    • #%PAM-1.0
      
      # SAML : cf man pam_saml
      # http://www.ossir.org/paris/supports/2010/2010-02-09/saml.pdf
      #auth required pam_saml.so grace=86400 userid=uid idp=/etc/ssl/saml-id.auf.org-metadata.xml trusted_sp=https://sogo-test-saml.ca.auf.org/SOGo/saml2-metadata saml_check_session_timeframe=0 saml_check_assertion_timeframe=0
      auth required pam_saml.so grace=600 userid=uid idp=/etc/ssl/saml-id.auf.org-metadata.xml trusted_sp=https://sogo-test-saml.ca.auf.org/SOGo/saml2-metadata
      account required                        pam_permit.so
      session required                        pam_permit.so

Côté IdP

Les attributs à fournir :

  • pour SOGo : nom, prénom, adél
  • pour Dovecot : nom, prénom, adél, uid (pour nous (id.auf) Attribute policy : Default+)


Projet/SOGo/TestsSAML (dernière édition le 2016-02-03 15:49:47 par MoussaNombre)