Sommaire
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)
- pré-requis :
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:/#
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
- pré-requis :
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 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+)