Aujourd'hui un petit tuto qui fait suite à celui d'hier. Nous allons tenter une authentification sur notre serveur fraichement installé via un petit script PHP tout bête.

Pour dialoguer avec le serveur CAS nous utiliseront la librairie officielle phpCAS que vous trouverez à cette adresse.

Après avoir téléchargé et décompressé notre librairie il nous faut créer un dossier dans lequel se situera notre application puis y placer la librairie CAS.

$ cd /var/www/
$ mkdir php-cas/
$ cd php-cas/
$ cp -r $DOSSIER_TELECHARGEMENT/CAS .
$ touch index.php

Ouvrez votre éditeur préféré (Geany FTW :p) et collez y ce bout de code.

<?php
// On inclue la librairie
include_once('CAS/CAS.php'); 

// Activation du mode debug
phpCAS::setDebug();

// On définit la localisation du serveur
$serveurSSO="localhost";
$serveurSSOPort=8443;
$serveurSSORacine='cas-server-webapp-3.4.12';

// On lance le client
phpCAS::client(CAS_VERSION_2_0,$serveurSSO,$serveurSSOPort,$serveurSSORacine);

// On spécifie la version SSL pour les requètes Curl
phpCAS::setExtraCurlOption(CURLOPT_SSLVERSION,3);
// Puis le certificat du serveur CAS
phpCAS::setCasServerCACert('/home/edhelas/cas.pem');

// On force l'authentification
phpCAS::forceAuthentication();

// SI l'utillisateur souhaite se déconnecter...
if (isset($_REQUEST['logout'])) {
    phpCAS::logout();
}

// Une petite page web pour montrer que tout vas bien :)
?>
<html>
    <head>
        <title>phpCAS simple client</title>
    </head>
    <body>
        <h1>Successfull Authentication!</h1>
        <p>the user's login is <b><?php echo phpCAS::getUser(); ?></b>.</p>
        <p>phpCAS version is <b><?php echo phpCAS::getVersion(); ?></b>.</p>
        <p><a href="?logout=">Logout</a></p>
    </body>
</html>

Quelques explications

Pour la partie localisation rien de bien méchant décomposez simplement l'URL où se situe le serveur CAS (pour ma part https://localhost:8443/cas-server-webapp-3.4.12/).

La ligne phpCAS::setExtraCurlOption() permet de forcer le type de requêtes que Curl fera sur le serveur CAS. Ne l'oubliez pas sinon CAS ne pourra pas valider le ticket ;).

Pour le certificat je suis passé par Firefox pour le réexporter. En effet celui-ci étant stocké dans le magasin de certificats créé dans le premier tutoriel je ne pouvais pas directement aller le chercher.

Pour ce faire ouvrez Firefox, visitez l'URL brute du serveur CAS et acceptez le certificat. Puis allez dans Préférences > Avancé > Chiffrement > Afficher les certificats > Serveurs et exportez le certificat du serveur localhost:8443.

Il ne vous reste plus qu'à visiter votre script PHP : http://localhost/php-cas/ qui, normalement devrais vous rediriger directement sur le serveur CAS pour vous authentifier.

Une fois authentifié CAS vous redirigera vers le script PHP qui affichera :

Successfull Authentication!
the user's login is toto.
phpCAS version is 1.3.1.
Logout

C'est tout pour aujourd'hui :)