====== Jappix ====== [[Jappix]] est un client XMPP entièrement écrit en javascript. Il est possible d'en protéger l'accès par LemonLDAP en utilisant une authentification CAS (jappix servira alors de proxy CAS pour votre serveur Jabber) ===== Activer le provider CAS sur votre LemonLDAP ===== Le première étape est d'activer le module fournisseur CAS sur votre serveur LemonLDAP ===== Patcher Jappix ===== Ensuite, il faut appliquer un patch à Jappix pour qu'il puisse utiliser une authentification CAS. diff -Nur -x '*.orig' -x '*.rej' jappix/php/desktop.php mezzanine_patched_jappix/php/desktop.php --- jappix/php/desktop.php 2012-01-16 22:51:37.000000000 +0100 +++ mezzanine_patched_jappix/php/desktop.php 2012-07-13 14:23:02.625826144 +0200 @@ -16,6 +16,31 @@ // Someone is trying to hack us? if(!defined('JAPPIX_BASE')) exit; +if (AUTH_CAS == 'on'){ + ini_set('include_path', ini_get('include_path').PATH_SEPARATOR.'/usr/share/pear'); + require_once('CAS.php'); + if (DEVELOPER == 'on'){ + phpCAS::setDebug(session_save_path() . '/cas.log'); + } + phpCAS::proxy(CAS_VERSION_2_0,CAS_SERVER,443,CAS_URI); + phpCAS::setPGTStorageFile(session_save_path()); + if (CAS_CACERT != '' && file_exists (CAS_CACERT)){ + phpCAS::setCasServerCACert(CAS_CACERT); + } else { + phpCAS::setNoCasServerValidation(); + } + phpCAS::forceAuthentication(); + $user=phpCAS::getUser(); + $pt=phpCAS::retrievePT('xmpp://'.HOST_MAIN,$err_code,$output); + + if(preg_match('/^PT\-/', $pt)){ + $js="doLogin('" . $user . "', '".HOST_MAIN."', '" . $pt . "', '".JAPPIX_RESOURCE."', '80',false)"; + } else{ + $js=""; + } + // Destroy PHP Session now, so that the user will be able to reconnect later + session_destroy(); +} ?> @@ -40,7 +65,7 @@ } ?> - + 'off', 'compression' => 'off', 'multi_files' => 'off', - 'developer' => 'off' + 'developer' => 'off', + 'auth_cas' => 'off', + 'cas_server' => 'https://cas.domain.tld', + 'cas_uri' => '', + 'cas_cacert' => '' ); // Define a default values array @@ -73,5 +77,10 @@ define('COMPRESSION', $main_conf['compression']); define('MULTI_FILES', $main_conf['multi_files']); define('DEVELOPER', $main_conf['developer']); +define('AUTH_CAS', $main_conf['auth_cas']); +define('CAS_SERVER', $main_conf['cas_server']); +define('CAS_URI', $main_conf['cas_uri']); +define('CAS_CACERT', $main_conf['cas_cacert']); + ?> Ce patch est une adaptation de ce qui est expliqué ici: http://mdl29.net/doku.php?id=braveo:docinstall:cas:jappix je n'en suis donc pas l'auteur d'origine, j'ai juste changé 2/3 trucs, dont la possibilité de valider le certificat du serveur CAS, ce qui me parait important Télécharger ensuite la dernière version de phpCAS ici: https://wiki.jasig.org/display/CASC/phpCAS et décompressez l'archive à la racine de votre installation de jappix. Éditez maintenant le fichier de configuration read-main.php et adaptez les valeurs des variables auth_cas (à mettre à on) cas_server (le nom DNS de votre seveur LemonLDAP::NG, en général auth.domain.tld), cas_uri (/cas par défaut sur LemonLDAP::NG) et cas_cacert (mettez le chemin vers la CA qui a signé le certificat de votre serveur CAS, si cette variable est vide ou si le fichier n'existe pas, Jappix ne validera pas l'authenticité de votre serveur CAS, ce qui n'est pas top d'un point de vue sécurité). ===== Configurer votre serveur Jabber pour qu'il utilise une authentification CAS ===== La dernière étape est de configurer votre serveur Jabber pour qu'il utilise une authentification CAS. Nous utilisons Ejabberd et pam_cas qui fonctionnent très bien avec ces directives: * /etc/ejabberd/ejabberd.cfg: [...] % Use pam for authentication (to get pam_cas support) % LDAP for everything else {auth_method, pam}. {ldap_servers, ["localhost"]}. {ldap_base, "ou=Users,dc=domain,dc=tld"}. {ldap_filter, "(|(posixMemberOf=equipe)(posixMemberOf=jabber))"}. [...] * /etc/pam.d/ejabberd #%PAM-1.0 auth sufficient pam_cas.so -sxmpp://domain.tld -f/etc/pam_cas.conf auth include system-auth account include system-auth * /etc/pam_cas.conf host auth.lapiole.org uriValidate /cas/proxyValidate trusted_ca /etc/pki/tls/certs/cacert.pem Pour les systèmes CentOS 5 et 6 ou compatibles, nous avons une version packagées en rpm de pam_cas sur notre [[http://repo.firewall-services.com/centos/|dépôt]]