Wiki » Historique » Version 1
Version 1/24
-
Suivant » -
Version actuelle
Gaston TJEBBES, 01/06/2010 16:04
Cassification d'une application sur Scribe¶
Scribe est fourni avec un serveur d'authentification SSO compatible CAS. Cette page a pour objectif de guider les utilisateurs (administrateurs) de Scribe à utiliser le mode SSO dans leurs applications web php. Les indications fournies permettent de garantir la compatibilité avec les version 0.5 et 1.0.1 de la librairie php-cas sur laquelle se base le paquet php5-cas.
Cas n°1 : authentification simple¶
Ici, seule l'authentification de l'utilisateur est nécessaire (l'application ne requière aucune autre information). La cassification de l'accès à une page reste très simple (fonctionnement du Cas classique). On utilisera la configuration centralisée située dans /usr/share/php/configCAS/cas.inc.php.
Initialisation du client¶
<?php require_once('CAS/CAS.php'); require_once('configCAS/cas.inc.php'); phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false);
Les variables __CAS... sont configurées dans le fichier 'cas.inc.php'. La variable à false signifie qu'une session php a déjà été démarrée avant l'appel au client.
Désactivation du contrôle de certificats¶
En attendant une méthode stable de gestion des certificats, nous utiliserons la méthode setNoCasServerValidation :
if (method_exists(phpCAS, 'setNoCasServerValidation')){ phpCAS::setNoCasServerValidation(); }
L'utilisation de la fonction method_exists permet d'assuere la compatibilité avec les différentes version du client phpCas (paquet php5-cas)
Authentification¶
phpCAS::forceAuthentication();
La redirection vers le serveur CAS est effectuée si nécessaire, par la suite le code est éxécuté dans un contexte authentifié.
Déconnexion¶
if (isset($_REQUEST['logout'])) { if (method_exists(phpCAS, 'logoutWithUrl')){ phpCAS::logoutWithUrl($_SERVER["SCRIPT_URI"]); }else{ phpCAS::logout($_SERVER["SCRIPT_URI"]); } }
La variable de redirection ici : $_SERVER["SCRIPT_URI"] peut être remplacée par la page de logout prévue au départ dans l'application.
Déconnexion centralisée¶
if (__CAS_LOGOUT){ if (method_exists(phpCAS, 'logoutRequests')){ phpCAS::logoutRequests(); } }
La variable __CAS_LOGOUT est configuré dans le fichier configCAS/cas.inc.php.
A noter : cette fonction fournit par le client CAS d'origine a un fonctionnement très limité, elle ne fonctionne pas lorsque le nom de la session est forcé par l'application cassifié (appel à session_name(nomdelasession)).
Dans ce cas, préféré l'utilisation de la librairie eolePhpCAS.
Forcer l'url de votre application auprès du serveur CAS¶
Dans certains cas, par exemple :
Accès au travers d'un reverseproxy d'une application http par le protocole https et port 80 fermé sur le reverseproxy.
Il peut être utile de forcer l'url de l'application.
phpCAS::setFixedServiceURL("https://adressedemonapplication");
Il est possible de construire l'url depuis les variables php ($_SERVER par exemple).
Récupération du login de l'utilisateur¶
phpCAS::getUser();
Le tout dans des fonctions¶
<?php function cas_auth(){ require_once('CAS/CAS.php'); require_once('configCAS/cas.inc.php'); phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false); if (method_exists(phpCAS, 'setNoCasServerValidation')){ phpCAS::setNoCasServerValidation(); } if (__CAS_LOGOUT){ if (method_exists(phpCAS, 'logoutRequests')){ phpCAS::logoutRequests(); } } phpCAS::forceAuthentication(); } function cas_logout( require_once('CAS/CAS.php'); require_once('configCAS/cas.inc.php'); phpCAS::client(__CAS_VERSION, __CAS_SERVER, __CAS_PORT, __CAS_URL, false); if (method_exists(phpCAS, 'setNoCasServerValidation')){ phpCAS::setNoCasServerValidation(); } if (method_exists(phpCAS, 'logoutWithUrl')){ phpCAS::logoutWithUrl($_SERVER["SCRIPT_URI"]); }else{ phpCAS::logout($_SERVER["SCRIPT_URI"]); } } ?>