App User_Cas : prise en charge EOLE_SSO sélective
DOC TECHNIQUE
Cette App permet la prise en charge du service d'authentification Eole_SSO sur le serveur Magmatic. Par ailleurs, elle prend en charge la fédération d'identité provenant d'une authentification académique (serveur sso.ac-reunion.fr).
Elle facilite l'accès à tous les personnels Education Nationale de l'académie (dont les comptes sont synchronisés depuis l'Annuaire Académique Fédérateur - AAF) - ce qui exclue les autres types de personnels, les élèves et leurs responsables.
Elle provoque toutefois des dysfonctionnements avec les clients de synchronisation qui ne sont pas toujours capables, au grès des versions, d'afficher une mire d'authentification HTML (proposée par un service autre que NextCloud lui-même)
Modification apportée : contournement de l'app user_cas si la connexion provient d'un client de synchronisation.
Détail des modifications :
Désactiver l'exécution de l'app si le user_agent détecté contient la chaine "mirall" qui signe la présence d'un client de synchronisation
[ dossier nextcloud ]/ apps / user_cas / appinfo / app.php
le début du fichier est modifié comme suit :
/*
* @author
* @copyright
* LICENCE
*/
$app = new \OCA\UserCAS\AppInfo\Application();
$c = $app->getContainer();
$enabled = TRUE;
$script = (isset($_SERVER['SCRIPT_FILENAME']) ? $_SERVER['SCRIPT_FILENAME'] : '');
$requestUri = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '');
# >>> CI-DESSOUS LIGNES AJOUTEES
$mirall=false;
if(isset($_SERVER['HTTP_USER_AGENT'])) {
$mirall=strpos($_SERVER['HTTP_USER_AGENT'], 'mirall');
}
# >>> CI-DESSOUS LE BLOC QUI TESTE LES CAS DE FIGURE OU L'APP USER_CAS NE DOIT PAS ETRE ACTIVE
if (in_array(basename($script), array('console.php', 'cron.php', 'status.php', 'version.php'))
# le "test du client de synchro" est ajouté ci-dessous
|| $mirall !== false
|| strpos($requestUri, "/richdocuments/wopi/")
|| strpos($requestUri, "/oauth2/")
|| strpos($requestUri, "/s/")
|| strpos($requestUri, 'logreader')
|| strpos($requestUri, '/gallery/slideshow')
|| preg_match('/.*(.*\.public).*/', $requestUri)) {
$enabled = FALSE;
}
# la suite du fichier est inchangé
[...]