# App User_CAS : prise en charge EOLE_SSO sélective

**<span style="background-color: #800080; color: #ffffff;"> DOC TECHNIQUE </span>**

<p class="callout warning">**<span style="background-color: #993300; color: #ffffff;"> PROBLEME CONNU </span>** 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... </p>

<p class="callout info">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.</p>

<p class="callout danger">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)</p>

<p class="callout success">**Modification apportée** : contournement de l'app **user\_cas** si la connexion provient d'un client de synchronisation.</p>

[Les utilsateurs d'un **client de synchronisation** sont dorénavant invités à créer **un mot de passe d'application** spécifique](https://portail.ac-reunion.fr/ladoclela/books/cloud-academique/page/installation-du-client-de-synchronisation-windows "Installation du client de synchronisation (Windows)").

### Détail des modifications :

#### Désactiver l'exécution de l'app si le user\_agent détecté contient la chaine "<span style="color: #ff0000;">mirall</span>" qui signe la présence d'un client de synchronisation

 `[ dossier nextcloud ]/ apps / user_cas / appinfo / <strong>app.php </strong>`

le début du fichier est modifié comme suit :

```PHP
/*
 * @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é
[...]

```