• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Champ GLPI Usager ne match pas avec logins users au format upn :/
#1
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#2
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#3
Up ?
Indiquez-moi au moins si j'ai une chance de m'en sortir :p.

Bonne journée.
Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#4
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
  Reply
#5
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#6
J'ai repéré plusieurs sections :

Code:
/*
    * 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;

Code:
// * 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;
         }
      }

Code:
// * 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é :
Code:
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#7
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#8
Petit up ?
Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#9
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#10
up ! ^^
Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#11
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 ?
  Reply
#12
Malheureusement non :/.
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#13
Ph1, t'as moyen de m'envoyer un XML d'inventaire?
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#14
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#15
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#16
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
  Reply
#17
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#18
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#19
Oui, c'est quasiment fini de coder
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#20
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#21
Dans la prochaine, j'avoue avoir zappé :/
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#22
okay !
Ph1 // Admin Systèmes & Réseaux
OS : Ubuntu 14.04
Authentification Kerberos // SSO Multi domaines AD
GLPI 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#23
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply
#24
Ca ne sera que sur le plugin fusion
Co-leader, official developper
DCS official PARTNER: dcs.glpi@dcsit-group.com
  Reply
#25
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 9.2.3 // Fusion Inventory 9.2+2.0 (agent 2.4)
  Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)