You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2017-07-19 10:18:49

olivierglpi
Member
Registered: 2011-10-07
Posts: 8

v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

Bonjour,

Je reprends le sujet d'un vieux bug ( http://forum.glpi-project.org/viewtopic.php?id=24690 )  pour vérifier avec d'autres utilisateurs de l'authentification par CAS si le problème que je rencontre est spécifique à ma configuration ou si c'est un problème général depuis la version 9.1.5 (et peut être d'autres versions intermédiaires, je n'ai pas eu l'occasion de tester comme je suis passé de la 9.1.2 à la 9.1.5).

En authentification CAS, jusqu'à la version 9.1.2, j'utilisais la configuration suivante qui faisait ce que je souhaites : lorsqu'on clique sur le bouton "Déconnexion", on se retrouve sur une page qui indique "Vous vous êtes déconnecté(e) du Service Central d'Authentification" , et également : "Le service duquel vous arrivez a fourni un lien que vous pouvez suivre en cliquant ici".

Mon paramétrage CAS est le suivant : Configuration -> Authentification -> Autre méthode d'authentification :
Hôte CAS :  cas.mondomaine.fr
Port : 443
Répertoire de base (optionnel) : /cas-server-webapp
Adresse web de retour à la déconnexion (logout) : https://cas.mondomaine.fr/cas-server-we … domaine.fr

Depuis le passage à la version 9.1.5 le bouton de déconnexion me ramène sur la page https://monserveurglpi.mondomaine.fr/in … noAUTO=1au lieu de m'envoyer sur https://cas.mondomaine.fr/cas-server-we … domaine.fr

Est-ce que d'autres rencontrent ce problème également ?


Complément d'information ajouté suite à un nouveau test : je constate que le problème est apparu au passage à la version 9.1.3. La déconnexion fonctionnait comme attendu en 9.1.2 et c'est lors de la mise à jour vers la 9.1.3 qu'il apparait. D'après mes tests il n'est pas corrigé lors des montées de version en 9.1.4 et 9.1.5.

Dans le changelog de la 9.1.3 https://github.com/glpi-project/glpi/mi … 5?closed=1 il y a une entrée "Security issue in bundled phpCAS library bug" qui concerne une mise à jour de sécurité de la librairie phpCAS : https://github.com/glpi-project/glpi/issues/2027
Je ne sais pas si le problème vient de là mais je serai intéressé par des retours pour voir si d'autres personnes sont concernées.

Bonne journée,
Olivier

Last edited by olivierglpi (2017-08-29 14:20:15)

Offline

#2 2017-08-29 14:22:15

olivierglpi
Member
Registered: 2011-10-07
Posts: 8

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

Bonjour,
Je retente ma chance à l'approche de la rentrée : personne ne constate de problème de déconnexion CAS depuis le passage à la 9.1.3 ?

Olivier

Offline

#3 2017-09-15 10:02:52

frd
Member
Registered: 2017-09-15
Posts: 5

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

bonjour
je suis également confronté à ce problème avec la dernier version stable GLPI 9.1.6
le logout n'engage pas la destruction de la session CAS
le login  en revanche est nickel
je vais creuser un brin ...
à suivre
Fred

Offline

#4 2017-09-15 15:27:33

frd
Member
Registered: 2017-09-15
Posts: 5

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

Après petite exploration
pour que le CAS logout soit effectif à la déconnexion de GLPI
il faut que la variable de session glpiauthtype soit égale à 5

pour un utilisateur si on modifie en base dans la table users le champ autthype, cela fonctionne parfaitement
et le comportement est ok par rapport au code
https://github.com/glpi-project/glpi/bl … logout.php

je pense que là où ça cloche c'est qu’un utilisateur créé suite à une première authentification via CAS se trouve affecté avec un champ authtype avec valeur 0
et là...
je ne sais pas si c'est un bug
ou si c'est un paramétrage particulier qui m’échappe (profil par défaut... ?)

je gratte encore un peu
et suis aussi preneur d’éclairages !

Last edited by frd (2017-09-15 15:37:08)

Offline

#5 2017-09-15 16:05:37

frd
Member
Registered: 2017-09-15
Posts: 5

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

je ne sais pas...
on dirait qu'il manque un truc
à qualifier peut être avant bug avec d'autres avis

le comportement que j’attendrais est le suivant
user créé lors d'une validation CAS -> le champ authtype devrait être renseigné à 5

et autre point : je ne trouve pas dans les actions sur sélection d'utilisateurs, la possibilité de déclarer les utilisateurs en authentification CAS
en effet, la liste propose dans mon cas pour l'authentification externe les serveurs ldap paramétrés
hors, je pense que cette option devrait lister les méthodes activées dans glpi/front/auth.others.php
https://github.com/glpi-project/glpi/bl … ethods.php

Offline

#6 2017-09-19 09:41:02

frd
Member
Registered: 2017-09-15
Posts: 5

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

bonjour
sur mon installation (9.1.6) j'ai modifié le code pour pouvoir modifier la méthode d'authentification -> CAS
modification possible dans fiche utilisateur ou dans action sur sélection (massiveaction...)
Amélioration à proposer pour une prochaine version de GLPI ? 9.2 ?

Offline

#7 2017-09-19 10:23:16

frd
Member
Registered: 2017-09-15
Posts: 5

Re: v9.1.2 à v9.1.3 (non résolu en 9.1.6) : Logout CAS ne marche plus

les modification opérées
rappel de l'objectif : permettre la modification de l'attribut authtype des utilisateurs pour le renseigner à 5 (auth CAS) afin de rendre fonctionnel le logout

/inc/auth.class.php
Ajout de la méthode d'authentification CAS à la liste (prévoir aussi d'ajouter la chaîne à la traduction)

static function dropdown($options=array()) {
      global $DB;

      $p['name']                = 'auths_id';
      $p['value']               = 0;
      $p['display']             = true;
      $p['display_emptychoice'] = true;

      if (is_array($options) && count($options)) {
         foreach ($options as $key => $val) {
            $p[$key] = $val;
         }
      }

      $methods[self::DB_GLPI] = __('Authentication on GLPI database');

      if (!empty($CFG_GLPI["cas_host"])) {
         $methods[self::CAS]     = __('Authentication on a CAS server');
      }



      $sql = "SELECT COUNT(*) AS cpt
              FROM `glpi_authldaps`
              WHERE `is_active` = 1";
      $result = $DB->query($sql);

      if ($DB->result($result, 0, "cpt") > 0) {
         $methods[self::LDAP]     = __('Authentication on a LDAP directory');
         $methods[self::EXTERNAL] = __('External authentications');
      }

      $sql = "SELECT COUNT(*) AS cpt
              FROM `glpi_authmails`
              WHERE `is_active` = 1";
      $result = $DB->query($sql);

      if ($DB->result($result,0,"cpt") > 0) {
         $methods[self::MAIL] = __('Authentication on mail server');
      }

      return Dropdown::showFromArray($p['name'], $methods, $p);
   }

Fichier /ajax/dropdownMassiveActionAuthMethods.php
Ajout de CAS à la liste des actions disponibles

case Auth::CAS :
         echo "<input type='hidden' name='auths_id' value='0'>";
         break;

Fichier /inc/user.class.php
Ajout de Auth::CAS dans les conditions de traitement

static function changeAuthMethod($IDs=array(), $authtype=1 ,$server=-1) {
      global $DB;

      if (!Session::haveRight(self::$rightname, self::UPDATEAUTHENT)) {
         return false;
      }

      if (!empty($IDs)
          && in_array($authtype, array(Auth::CAS, Auth::DB_GLPI, Auth::LDAP, Auth::MAIL, Auth::EXTERNAL))) {

         $where = implode("','",$IDs);
         $query = "UPDATE `glpi_users`
                   SET `authtype` = '$authtype',
                       `auths_id` = '$server',
                       `password` = '',
                       `is_deleted_ldap` = '0'
                   WHERE `id` IN ('$where')";
         if ($DB->query($query)) {
            foreach ($IDs as $ID) {
               $changes[0] = 0;
               $changes[1] = '';
               $changes[2] = addslashes(sprintf(__('%1$s: %2$s'),
                                                __('Update authentification method to'),
                                                Auth::getMethodName($authtype, $server)));
               Log::history($ID, __CLASS__, $changes, '', Log::HISTORY_LOG_SIMPLE_MESSAGE);
            }

            return true;
         }
      }
      return false;
   }

Offline

Board footer

Powered by FluxBB