You are not logged in.
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
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
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
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
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
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
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