Taille: 6815
Commentaire: CrudeSAML (auth: invalid authn AuthnInstant ) & Dovecot patch
|
Taille: 6111
Commentaire: Aucunement besoin des dossiers 64bits
|
Texte supprimé. | Texte ajouté. |
Ligne 36: | Ligne 36: |
== installation des paquets requis == | == Compilation de Lasso et CrudeSAML == |
Ligne 106: | Ligne 106: |
. Pour les serveurs 64bits : * s'ils n'existent pas (cas des CT convertis en VM avec des noyaux 64bits), créer les répertoires corresponds : {{{ root@sogo-test-saml:~/crudesaml-1.4# mkdir -p /usr/lib/x86_64-linux-gnu/sasl2 root@sogo-test-saml:~/crudesaml-1.4# mkdir -p /lib64/security cat >> /etc/ld.so.conf.d/i486-linux-gnu.conf << __EOF__ /lib64 /usr/lib/x86_64-linux-gnu/ __EOF__ root@sogo-test-saml:~/crudesaml-1.4# ldconfig }}} * ensuite copier les fichiers : {{{ root@sogo-test-saml:~/crudesaml-1.4# cp -aiv /usr/local/lib/security/pam_saml.so.0.2.0 /lib64/security/ root@sogo-test-saml:~/crudesaml-1.4# cp -aiv /lib/sasl2/*.so* /usr/lib/x86_64-linux-gnu/sasl2/ }}} |
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:/#
./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
- pré-requis :
Dovecot pour authentification SAML
/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
- 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 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
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+)