wiki:ProtegerApplicationPhpAvecCas

Protéger une application PHP avec CAS

TOC?

Introduction

CAS permet d'effectuer l'authentification sur un site web et uniquement l'authentification pour le moment. Des librairies clientes pour CAS sont disponibles dans la plupart des langages, vous en trouverez une liste non exhaustive ici :  http://www.ja-sig.org/wiki/display/CASC/Clients De même, certaines applications possèdent déjà un plugin ou un hack qui permettent de les CASsifier, vous pouvez en trouver une liste, là aussi non exhaustive, ici sur le  wiki Ja-Sig ou encore sur  SourceSup.

Mise en place

La mise en place d'une telle authentification est réellement simple, il n'y a que quelques lignes de codes à écrire pour réalise l'authentification.

La librairie fonctionne avec les pré-requis suivants : PHP 4.3.1+, CURL 7.5+, PEAR DB.

  • Rendez-vous sur la page  http://www.ja-sig.org/wiki/display/CASC/phpCAS+downloads pour télécharger la dernière version stable de la librairie PHP-CAS.
  • La décompresser. Copier ensuite le dossier CAS, situé dans le répertoire source : vous pouvez soit le mettre dans le dossier d'include global de votre PHP, ou le mettre ailleurs du moment que vous indiquerez plus tard le bon chemin au moment de l'inclusion.
  • Pour réaliser l'authentification, il suffit d'écrire les quelques lignes de code suivantes :
// import phpCAS lib
include_once('CAS/CAS.php');

// On ne veut pas d'info de debuggage, a la place de FALSE vous pouvez indiquer un fichier
phpCAS::setDebug(FALSE);

// initialize phpCAS -- Bien que le serveur CAS de l'ENIB soit en version 3, il faut mettre CAS_VERSION_2_0, ca marche tres bien
phpCAS::client(CAS_VERSION_2_0,'cas.enib.fr',443,'');

// force CAS authentication -- Si l'utilisateur n'est pas authentifie, il redirige vers le serveur CAS -- ensuite son authentification est validee aupres du serveur
phpCAS::forceAuthentication();

// Ici on est sur que l'utilisateur est un utilisateur valide pour le serveur CAS
  • Maintenant pour récupérer le login de la personne connectée, il suffit d'appeler la méthode suivante :
<?php  echo phpCAS::getUser(); ?> connecte

Notez bien que le serveur CAS ne fournit pas pour le moment plus d'informations (dans les futures versions, il sera possible d'avoir d'autres informations que le login).

  • Vous souhaitez peut-être pouvoir déconnecter un utilisateur, il suffit d'appeler la méthode suivante :
phpCAS::logout();

Si vous voulez en savoir plus sur la librairie, une documentation des sources ainsi que des exemples sont fournis dans l'archive, néamoins ce cas, dit "simple" dans la doc de phpCas suffit la plupart du temps.