# addacl GroupeAUF:read,write <> = 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 == * [[https://dev.entrouvert.org/lasso/lasso-2.3.6.tar.gz|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 [[attachment:lasso-export.diff|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 : +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:/# }}} * Une erreur après une compile {{{ Feb 3 08:24:26 mail-montreal auth: PAM unable to dlopen(pam_saml.so): /lib/security/pam_saml.so: undefined symbol: rpl_malloc Feb 3 08:24:26 mail-montreal auth: PAM adding faulty module: pam_saml.so }}} avec une solution ici https://groups.google.com/forum/#!topic/ikarus-users/_R0QHqwyYz8 {{{ If you get a problem about an undefined reference to rpl_malloc, you probably need to do: $ export ac_cv_func_malloc_0_nonnull=yes before running ./configure ... }}} * On compile : {{{ $ export ac_cv_func_malloc_0_nonnull=yes $ ./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 root@sogo-test-saml:/usr/lib/sasl2# cp -aiv /usr/local/lib/liblasso.so.3.9.4 /lib/i386-linux-gnu/liblasso.so.3 }}} * 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) * vérifier les dépendances et les conflits de construction : `mnombre@sogo-test-saml:~/dovecot$ cd dovecot-2.2.13/ ; dpkg-checkbuilddeps` * mettre [[attachment:auf_saml.patch|le patch]] dans le dossier des patchs Debian : `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` . en cas d'erreur {{{ ... checking whether we are cross compiling... configure: error: in `/home/mnombre/labo-debian/dov2.2.13/dovecot-2.2.13': configure: error: cannot run C compiled programs. ... }}} faire `sudo aptitude reinstall libc6-dev` et relancer le debuild. . pour l'erreur {{{ ... capabilities-posix.c:8:28: fatal error: sys/capability.h: Aucun fichier ou dossier de ce type compilation terminated. ... }}} il faut un `sudo aptitude reinstall libcap-dev` et ... relancer le debuild. * 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+''''') ----