Modifications entre les versions 10 et 11
Version 10 à la date du 2015-03-18 22:04:39
Taille: 4933
Commentaire:
Version 11 à la date du 2015-07-16 16:18:39
Taille: 5164
Éditeur: MoussaNombre
Commentaire: Mise à jour
Texte supprimé. Texte ajouté.
Ligne 10: Ligne 10:
 * sogo (nightly) : 2.0.5.20130405-1  * 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
Ligne 101: Ligne 125:
== Configuration de SOGo ==
 * modification de la config SOGo :
  {{{
defaults -u sogo write sogod SOGoAuthenticationType "saml2"
sogod SOGoSAML2IdpCertificateLocation /etc/ssl/certs/GandiStandardSSLCA.pem
sogod SOGoSAML2IdpMetadataLocation /etc/ssl/saml-id.auf.org-metadata.xml
sogod SOGoSAML2IdpPublicKeyLocation /etc/ssl/saml-id.auf.org-cert.pem
sogod SOGoSAML2CertificateLocation /etc/ssl/certs/saml-sogo-test-saml.ca.auf.org-cert.pem
sogod SOGoSAML2LogoutEnabled YES
sogod SOGoSAML2PrivateKeyLocation /etc/ssl/private/saml-sogo-test-saml.ca.auf.org-key.pem
  }}}

 * restart de SOGo

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

installation des paquets requis

  • 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".
      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

  • /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)