Topic: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonjour,

Je suis en GLPI 0.84.8 + FusionInventory 0.84+3.5.

J'ai mis en place une authentification Kerberos SSO multi domaines en m'appuyant sur le UserPrincipalname.
Cela fonctionne parfaitement.

En revanche, les machines qui remontent leur inventaire indiquent un usager du type "user@domain", et GLPI ne semble pas vouloir matcher la valeur de ce champ avec le user correspondant dans la base utilisateur qui est du type user@domain.local (upn). En revanche, pour avoir testé, ça match si un user du type "user" (samaccountname) comme login existe dans la base utilisateur.

Lorsque je check le fichier xml, je ne retrouve pas la valeur user@domain. Je suppose qu'il doit s'agir de la concaténation de plusieurs valeurs inventoriées ?
Je me demandais s'il serait possible de modifier le comportement de l'agent FusionInventory lorsqu'il remonte son inventaire, afin qu'au lieu qu'il remonte "user@domain", ce soit plutôt une concaténation de USERID(ou LASTLOGGEDUSER)+"@"+WORKGROUP.

Cela est-il faisable ? et si oui, pourriez-vous m'indiquer la marche à suivre ?
D'avance merci !

(Et continuez votre super boulot, Fusion Inventory c'est de la balle !)

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonjour,

Pas de nouvelle ? smile
Je voulais simplement préciser que l'authent' via upn m'est obligatoire dans le cadre du SSO kerberos multidomaines. Rebasculer en Samaccountname n'est donc pas possible.
Merci d'avance pour votre retour.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Up ?
Indiquez-moi au moins si j'ai une chance de m'en sortir tongue.

Bonne journée.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Euh, bah faut modifier le code dans le plugin (à priori dans inc/formatconvert.class.php)

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonjour ddurieux,

Merci beaucoup pour l'info !
Je vais creuser ce fichier php en espérant trouver une solution.
Je te redemanderai surement de l'aide, car je ne suis pas développeur et encore moins familier avec le code PHP.

Au passage, suis-je le seul à rencontrer ce genre de problème ? Serait-il intéressant de pouvoir gérer ce paramétrage fin directement via les options du plugin ?
@ bientôt.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

6 (edited by Ph1 2015-03-18 09:38:04)

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

J'ai repéré plusieurs sections :

  /*
    * Modify Computer inventory
    */
   static function computerInventoryTransformation($array) {
      global $DB, $PF_ESXINVENTORY, $CFG_GLPI;

      $a_inventory = array();
      $thisc = new self();
      $pfConfig = new PluginFusioninventoryConfig();

      $ignorecontrollers = array();

      if (isset($array['ACCOUNTINFO'])) {
         $a_inventory['ACCOUNTINFO'] = $array['ACCOUNTINFO'];
      }

      // * HARDWARE
      $array_tmp = $thisc->addValues($array['HARDWARE'],
                                     array(
                                        'NAME'           => 'name',
                                        'OSNAME'         => 'operatingsystems_id',
                                        'OSVERSION'      => 'operatingsystemversions_id',
                                        'WINPRODID'      => 'os_licenseid',
                                        'WINPRODKEY'     => 'os_license_number',
                                        'WORKGROUP'      => 'domains_id',
                                        'UUID'           => 'uuid',
                                        'LASTLOGGEDUSER' => 'users_id',
                                        'operatingsystemservicepacks_id' =>
                                                      'operatingsystemservicepacks_id',
                                        'manufacturers_id' => 'manufacturers_id',
                                        'computermodels_id' => 'computermodels_id',
                                        'serial' => 'serial',
                                        'computertypes_id' => 'computertypes_id'));
      if ($array_tmp['operatingsystemservicepacks_id'] == ''
              && isset($array['HARDWARE']['OSCOMMENTS'])
              && $array['HARDWARE']['OSCOMMENTS'] != '') {
         $array_tmp['operatingsystemservicepacks_id'] = $array['HARDWARE']['OSCOMMENTS'];
      }
      if (isset($array_tmp['users_id'])) {
         if ($array_tmp['users_id'] == '') {
            unset($array_tmp['users_id']);
         } else {
            $array_tmp['contact'] = $array_tmp['users_id'];
            $tmp_users_id = $array_tmp['users_id'];
            $split_user = explode("@", $tmp_users_id);
            $query = "SELECT `id`
                      FROM `glpi_users`
                      WHERE `name` = '" . $split_user[0] . "'
                      LIMIT 1";
            $result = $DB->query($query);
            if ($DB->numrows($result) == 1) {
               $array_tmp['users_id'] = $DB->result($result, 0, 0);
            } else {
               $array_tmp['users_id'] = 0;
            }
         }
      }
      $array_tmp['is_dynamic'] = 1;
      // * USERS
      $cnt = 0;
      if (isset($array['USERS'])) {
         if (count($array['USERS']) > 0) {
            $user_temp = '';
            if (isset($a_inventory['Computer']['contact'])) {
               $user_temp = $a_inventory['Computer']['contact'];
            }
            $a_inventory['Computer']['contact'] = '';
         }
         foreach ($array['USERS'] as $a_users) {
            $array_tmp = $thisc->addValues($a_users,
                                           array(
                                              'LOGIN'  => 'login',
                                              'DOMAIN' => 'domain'));
            $user = '';
            if (isset($array_tmp['login'])) {
               $user = $array_tmp['login'];
               if (isset($array_tmp['domain'])
                       && !empty($array_tmp['domain'])) {
                  $user .= "@".$array_tmp['domain'];
               }
            }
            if ($cnt == 0) {
               if (isset($array_tmp['login'])) {
                  $query = "SELECT `id`
                            FROM `glpi_users`
                            WHERE `name` = '" . $array_tmp['login'] . "'
                            LIMIT 1";
                  $result = $DB->query($query);
                  if ($DB->numrows($result) == 1) {
                     $a_inventory['Computer']['users_id'] = $DB->result($result, 0, 0);
                  }
               }
            }

            if ($user != '') {
               if (isset($a_inventory['Computer']['contact'])) {
                  if ($a_inventory['Computer']['contact'] == '') {
                     $a_inventory['Computer']['contact'] = $user;
                  } else {
                     $a_inventory['Computer']['contact'] .= "/".$user;
                  }
               } else {
                  $a_inventory['Computer']['contact'] = $user;
               }
            }
            $cnt++;
         }
         if (empty($a_inventory['Computer']['contact'])) {
            $a_inventory['Computer']['contact'] = $user_temp;
         }
      }
 // * Update $a_inventory with $data_collect;

      foreach ($data_collect as $data) {
         // Update computer model
         if (isset($data['computermodels_id'])) {
            $a_inventory['Computer']['computermodels_id'] = $data['computermodels_id'];
         }
         // Update computer type
         if (isset($data['computertypes_id'])) {
            $a_inventory['Computer']['computertypes_id'] = $data['computertypes_id'];
         }
         // Update computer OS
         if (isset($data['operatingsystems_id'])) {
            $a_inventory['Computer']['operatingsystems_id'] = $data['operatingsystems_id'];
         }
         // Update computer OS version
         if (isset($data['operatingsystemversions_id'])) {
            $a_inventory['Computer']['operatingsystemversions_id'] = $data['operatingsystemversions_id'];
         }
         // Update computer user
         if (isset($data['user'])) {
            $query = "SELECT `id`
                      FROM `glpi_users`
                      WHERE `name` = '" . $data['user'] . "'
                      LIMIT 1";
            $result = $DB->query($query);
            if ($DB->numrows($result) == 1) {
               $a_inventory['Computer']['users_id'] = $DB->result($result, 0, 0);
            }
         }

Seulement, je n'ai aucune idée de ce qu'il faut modifier. L'objectif étant que le champ "contact" soit du type user@domain.xx au lieu de user@domain.
La modif' se situe-t-elle dans ces sections ? si oui, quelle(s) ligne(s) modifier ? :'(
Une idée ?

PS : Extrait de la section HARDWARE de l'inventaire qui est remonté :

HARDWARE
•ARCHNAME: MSWin32-x64-multi-thread
•CHASSIS_TYPE: Laptop
•CHECKSUM: 131071
•DEFAULTGATEWAY: x.x.x.x
•DNS: y.y.y.y
•ETIME: 27
•IPADDR: z.z.z.z
•LASTLOGGEDUSER: pnom
•MEMORY: 3999
•NAME: PCXXXX
•OSNAME: Microsoft Windows 8.1 Professionnel
•OSVERSION: 6.3.9600
•PROCESSORN: 1
•PROCESSORS: 2500
•PROCESSORT: Intel(R) Core(TM) i3-3120M CPU @ 2.50GHz
•USERID: pnom
•UUID: XXXXXXXXXXXXXXXXXXXXXXXX
•VMSYSTEM: Physical
•WINLANG: 1036
•WINOWNER: XXX
•WINPRODID: XXX-XXX--XXXXXX
•WINPRODKEY: XXXXX-XXXXX-XXXXX-XXXXXX
•WORKGROUP: domain.xx
Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Salut ddurieux,

Petit up pour que tu sois notifié smile.
Peux tu m'éclairer sur mes deux messages précedents stp ?

Merci bcp pour ton aide.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Petit up ?

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Un pti coup de pouce ?
D'avance merci !

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

10

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

up ! ^^

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Hello,

Je me trouve exactement dans le même cas de figure (utilisateurs ouvrant leur session avec UPN, et remontées FI basées sur le samAccountName).

Avez-vous trouvé une solution ?

12

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Malheureusement non hmm.
C'est reporté dans ma TODO.

Je suis intéressé évidemment si tu trouves la solution de ton côté.
@+

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Ph1, t'as moyen de m'envoyer un XML d'inventaire?

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

14 (edited by Ph1 2015-06-03 19:40:17)

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonsoir David,

Pas de soucis, je t'envoie ça par mail. "ça fait plaisir de voir que je ne suis pas le seul à avoir le soucis" ^_^
Ph1.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

15

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonjour ddurieux,

As-tu pu regarder un peu ?
C'est pas pressé, mais c'est juste pour savoir si tu as des pistes de ton côté.

Merci.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Yep, normalement y a pas grand chose à ajouter, mais je n'ai pas eu le temps de le faire encore

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

17

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

OK, merci pour la réponse ^^.
J'attends de tes nouvelles alors smile.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

18

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Bonjour ddurieux !

As-tu pu trouver un peu de temps pour te consacrer à ce sujet ?
Merci d'avance pour ton retour.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Oui, c'est quasiment fini de coder

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

20

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

hello ddurieux,

Peux-tu m'indiquer dans quelle version de fusion inventory cela sera intégré ?
Et quand la modif' est prévue de paraitre ?
Encore merci pour ton boulot.

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Dans la prochaine, j'avoue avoir zappé hmm

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

22

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

okay !

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

23

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Salut ddurieux,
Ces correctifs seront-ils effectifs dans ma version de GLPI et de FusionInventory ou faudra-t-il forcément mettre à jour GLPI ?

@+

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

Ca ne sera que sur le plugin fusion

Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com

25

Re: Champ GLPI Usager ne match pas avec logins users au format upn :/

OK, je n'aurais qu'à mettre à jour vers FusionInventory 0.84+3.X donc ?

Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 0.84.8 // Fusion Inventory 0.84+3.5