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"]);
}
}
?>