// Cette méthode permet de forcer CAS à demander au client de s'authentifier s'il ne trouve aucun client d'authentifié. // (redirige vers le serveur d'authentification si aucun utilisateur authentifié n'a été trouvé par le client CAS) phpCAS::forceAuthentication(); // A partir de là, l'utilisateur est forcément authentifié sur son CAS. // Récupérer l'identifiant (login ou numéro interne...) de l'utilisateur authentifié pour le traiter dans l'application $id_ENT = phpCAS::getUser(); // Pour mettre fin au ob_start() ; cas 1/2 où il n'y a pas eu d'erreur. ob_end_clean(); } catch(CAS_Exception $e) { // Pour mettre fin au ob_start() ; cas 2/2 où il y a eu une erreur. $contenu_erreur_phpcas = ob_get_clean(); // @author Daniel Caillibaud <*****@*****.**> // on ajoute les traces $msg_supplementaire = '<p>Cette erreur peut être due à un certificat expiré ou des données invalides renvoyées par le serveur CAS.</p>'.get_string_traces($e); if (is_a($e, 'CAS_AuthenticationException')) { // $e->getMessage() ne contient rien... error_log('SACoche - Erreur phpCAS sur l\'ENT "'.$connexion_nom.'" (serveur '.$cas_serveur_host.') pour l\'établissement n°'.$BASE.'.'); exit_CAS_Exception( $contenu_erreur_phpcas , $msg_supplementaire ); } else { // On passe ici visiblement en cas de simple redirection si l'utilisateur n'est pas déjà connecté ; dans ce cas on a : // $e->getMessage() = "Terminate Gracefully" // get_parent_class($e) = "RuntimeException" } } // Forcer à réinterroger le serveur CAS en cas de nouvel appel à cette page pour être certain que c'est toujours le même utilisateur qui est connecté au CAS. unset($_SESSION['phpCAS']);
// Cette méthode permet de forcer CAS à demander au client de s'authentifier s'il ne trouve aucun client d'authentifié. // (redirige vers le serveur d'authentification si aucun utilisateur authentifié n'a été trouvé par le client CAS) phpCAS::forceAuthentication(); // A partir de là, l'utilisateur est forcément authentifié sur son CAS. // Récupérer l'identifiant (login ou numéro interne...) de l'utilisateur authentifié pour le traiter dans l'application $id_ENT = phpCAS::getUser(); // Pour mettre fin au ob_start() ; cas 1/2 où il n'y a pas eu d'erreur. ob_end_clean(); } catch (CAS_Exception $e) { // Pour mettre fin au ob_start() ; cas 2/2 où il y a eu une erreur. $contenu_erreur_phpcas = ob_get_clean(); // @author Daniel Caillibaud <*****@*****.**> $msg_log = 'phpCAS::forceAuthentication() sur ' . $cas_serveur_host . ' pour l\'établissement n°' . $BASE . ' qui utilise l\'ENT ' . $connexion_nom . ' a planté '; $msg_log .= $e->getMessage(); // on ajoute les traces dans le log $puces_traces = get_string_traces($e); if ($puces_traces != '') { $msg_log .= ' avec la trace :' . "\n" . $puces_traces; } trigger_error($msg_log); $msg_supplementaire = '<p>Cette erreur probablement due à des données invalides renvoyées par le serveur CAS.</p>' . $puces_traces; if (is_a($e, 'CAS_AuthenticationException')) { exit_CAS_Exception($contenu_erreur_phpcas, $msg_supplementaire); } else { // peut-on passer là ? trigger_error('phpCAS::forceAuthentication() sur ' . $cas_serveur_host . ' a planté mais ce n\'est pas une CAS_AuthenticationException'); exit_error('Problème authentification CAS', '<p>L\'authentification CAS sur ' . $cas_serveur_host . ' a échouée.<br />' . $e->getMessage() . '</p>' . $msg_supplementaire); } } // Forcer à réinterroger le serveur CAS en cas de nouvel appel à cette page pour être certain que c'est toujours le même utilisateur qui est connecté au CAS. unset($_SESSION['phpCAS']);