Le principe est relativement simple, par exemple lorsque l'utilisateur cliques sur le lien de l'espace membre, au lieu de lui demander ces identifiants, à l'aide de phpCas on le redirige vers le CAS. L'utilisateur s'identifie sur le CAS, le CAS le ramène sur le service (espace membre par exemple) avec un Service Ticket (ST). Puis le service valide se ST auprès du CAS qui va alors retourner l'identifiant de l'utilisateur. Rassurez-vous tout ce fait en quelques lignes de code grâce a phpCas, mais il est important de connaitre le processus, c'est pourquoi nous allons détailler ce processus.
Le service redirige l'utilisateur vers le CAS :
Location: https://cas.mdl29.net/login?service=https://inscriptions.mdl29.net/membres
L'utilisateur est déjà connecté au CAS ou se connecte, il est alors redirigé vers le service ici la webmail avec un Service-Ticket (ST) :
Location: https://mail.mdl29.net/?ticket=ST-956-Lyg0BdLkgdrBO9W17bXS
Le service vérifie la validité du ST :
https://cas.mdl29.net/serviceValidate?ticket=ST-956-Lyg0BdLkgdrBO9W17bXS&service=http://inscriptions.mdl29.net/membres
Réponse
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> <cas:authenticationSuccess> <cas:user>benvii</cas:user> </cas:authenticationSuccess> </cas:serviceResponse>
Nous avons du bien vérifié au près du CAS que l'utilisateur Benvii est bien identifié.
Je vous invite à télécharger la librairies phpCas : http://downloads.jasig.org/cas-clients/php/current/
Vous allez voir c'est relativement simple, quelques lignes de code suffisent. Prenons par exemple la page de connexion de l'espace membre de libr@net (modifié pour les besoins de cette doc) :
<?php include_once('../inc/CAS.php'); //Fichier CAS.php de la librairie //###################### Connexion via le CAS ############################# phpCAS::client(CAS_VERSION_2_0,'cas.mdl29.net',443,''); phpCAS::setServerServiceValidateURL('https://cas.mdl29.net/serviceValidate'); //phpCAS::setNoCasServerValidation(); //A utiliser si vous avez un certificat auto-signé par exemple phpCAS::forceAuthentication(); // On veux que l'utilisateur soit connecté //#################### Utilisateur est redirigé est forcément connecté ici # if(phpCAS::getUser()){ //Si réelement connecté echo "L'utilisateur : ".phpCAS::getUser()." est connecté"; // Utilisateur connecté on peut faire ce que l'on veux } ?>
Le serveur CAS lorsqu'il est installé est généralement disponible à une adresse du genre : https://cas.mdl29.net/cas/ Dans ce cas il faudra préciser ceci :
phpCAS::client(CAS_VERSION_2_0,'cas.mdl29.net',443,'/cas/');
Veillez aussi à adapter le port, peut-être que votre CAS est sur le port 8443 en non le 443 ?
Rédigé par Benjamin Bernard
Sources : Proxy CAS Walkthrough - Central Authentication Service - Jasig Wiki -
phpCAS - CAS Clients - Jasig Wiki