Passer au contenu principal

App User_CAS : prise en charge EOLE_SSO sélective

 DOC TECHNIQUE 

 PROBLEME CONNU  l'app User_CAS se désactive d'elle-même en cas d'anomalie indeterminée ; pour pallier à cela un cron relance l'activation de l'app toutes les 5 min... 

 

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.

Les utilsateurs d'un client de synchronisation sont dorénavant invités à créer un mot de passe d'application spécifique.

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é
[...]