Table des matières

CASsification le dernier maillon : Jappix

Introduction

Vous disposez normalement d'un serveur XMPP (jabber) cassifié. Nous allons maintenant nous en servir et cassifier jappix (client web XMPP).

Pour se faire nous allons comme pour roundcube utiliser la librairie phpCAS modifiée et changer un peu le code de jappix. Dans le but d'obtenir le scénario suivant :

Utilisateur connecté sur cas.mdl29.net :
jappix.mdl29.net cas.mdl29.net (service=https://jappix.mdl29.net/) https://jappix.mdl29.net/?ticket=… Procédure d'obtention du PGT et d'un ST pour le service jabber Utilisateur connecté sur jappix

Cassification de jappix

Téléchargez l'archive suivante : jappix_cas.tar.gz L’arborescence de l'archive est la suivante :

Copiez le contenu de du dossier jappix de l'archive dans votre dossier racine de jappix.

Vous devez ensuite adapter le patch php/desktop.php.patch à votre CAS c'est à dire modifier la ligne suivante : <PHP> $cas=CAS_getCredentials(“votre.cas.net”, 443, “/cas/si_pas_à_la_racine”, “https://jappix.votredomain.net”); </PHP>

vérifiez bien que le CAS peut envoyer des requêtes sur jappix (envoie de requête http vers jappix possible, certif reconnu par le CAS), ceci pour que l'envoie du PGT puisse s'effectuer sans encombre.

Vous n'avez plus qu'a appliquer le patch :

patch < desktop.php.patch

Allez ensuite sur jappix pour vérifier si tout fonctionne ……

Le code serait a améliorer, la solution choisie en terme de sécurité et critiquable car le user/ticket passe en clair dans le code source, mais sachant que la portée d'un ticket ne se limite que à un service particulier ce n'est pas si grave que ça.

Une autre méthode serait envisageable

Dans une discussion entamée avec les développeurs de diaspora nous avons élaboré un autre scénario de connexion plus sécurisé.

L'idée est simple, pré-connecter l'utilisateur coté serveur au serveur XMPP en php/ruby aussi appelé pre-binding. Puis de transmettre les variables (JID …) de la session XMPP initialisée au client, pour diaspora mini-jappix.

Pour retrouver cette discussion en anglais : https://github.com/diaspora/diaspora/pull/1750




Rédigé par Benjamin Bernard benvii@mdl29.net