You are not logged in.
Bien le bonjour et grand bravo à vous brillants développeur.
Nouvel utilisateur de GLPI 0.6 patché sous Windows 2000 Serveur (IIS 5) avec un Active directory bien configuré dans GLPI, j'ai deux petites questions :
1 / Vu que mes utilisateurs s'hautentifie sur le réseau et qu'IIS prend en charge le suivi de l'authentification Réseau, je me demandais s'il était possible soit de faire disparaitre la page de Login, soit de la modifier pour qu'elle se remplisse automatiquement.
Malheureusement je ne maitrise pas du tout PHP et je ne sais donc pas si cela est faisable ou non.
2 / Après avoir ballader dans les autres post, j'ai décider de me remonter le manches et de faire du développement corsé afin d'ajouter un menu.
L'idée et je pense que je ne suis pas le seul c'est de gérer plus que le Helpdesk des postes informatiques, à savoir Téléphone et Fax et là ou par contre j'inove, c'est que dans ma structure multisite, j'ai en charge la gestion des alarmes de chaque Site. Donc l'idée serait de dupliquer casi completement la structure de l'inventaire vers une structure de sécurité, et de rempacer après les Computerus par des Sites et les périphériques et autres par les types de matériel sous alarmes. Je ne vous demande bien sur pas de le faire, mais si vous pouviez me consacrer un peu de temps pour m'orienter sur les fichiers à modifier pour prendre en compte cette structure, en dehors du Glpi/Common/Funcions.php et du /Glpi/Dicts/French.php, je suis preneur, évidemment derrière, j'aurais toutes les sous structures à reprendre .... Bref du boulot en perspeecitve
Merci de vos éclaircissements, ils me seront utiles
Offline
1/ c'est vraiment super spécifique et je ne sais pas si c'est vraiment réalisable.
2/ je ne comprend pas tout ce que vous voulez faire.
POur info la 0.7 gérera directement le multi-site
MoYo - Julien Dombre - Association INDEPNET
Contribute to GLPI : Support Contribute References Freshmeat
Offline
Merci de la rapide réponse
pour le point 1, je sais bien que c'est très spécifique, mais chaque personne (dans l'absolu) travaillant sur son poste, nous essayons d'éviter les multi Logins. Donc c'est génial que GLPI controle l'identification avec le Domaine, mais ça me gène que les utilisateurs soient obligés de se réidentifier pour déclarer un problème.
Si quelqu'un à une idée sur la possibilité de réalisation je suis preneur
Pour le 2, l'idée principale est de gérer les ALARMES à savoir que pour un site, j'ai plusieurs type d'alarmes d'ou l'idée de dupliquer complètement la strucuture Inventaire vers une structure sécurité dans laquelle computers deviendra site et moniteur deviendra coffre 1, imprimante coffre 2 ....
la 0.7 m'enlevera effectivement une grosse épine du pied sur la gestion multi site, mais c'est dans 6 mois ... donc en attendant, je cherche à mettre en place une solution intermédiare
et comme je suis pas un grand développeur, mais qui sait peut-être un jour, je suis preneur de tuyaux sur les fichiers qui sont impactés par le CommonHeader car c'est principalement lui que je vais modifier
Bref si vous avez des idées ou des infos Merci
Sinon je vous embeterais plus sur ces 2 sujets effectivement assez spécifique
Bonne journée
Offline
Glpi permet de faire de l'authentification sur serveur CAS (http://php.univ-rennes1.fr/services/CAS.htm) essayez d'explorer cette voie.
Pour le point 2 si j'ai bien compris vous voulez redevelopper completement un GLPI mais adapté non plus à la gestion d'un parc informatique, mais à la gestion d'un parc d'alarmes ?
Si c'est le cas nous ne pouvons que vous encourager dans cette voie, mais cela va être difficile pour nous de vous aider beaucoup du moins pas d'une manière globale, par contre si vous avez des questions spécifiques, on devrait pouvoir y répondre.
Bazile Lebeau
Offline
Merci baaz, je vais creuzé ce que'on fait Rennes, a première vue il y effectivement de quoi m'aider. Je vous tiendrais au courant si j'y arrive.
Pour le point 2, je ne veux pas non plus tout reécrire car je souhaite aussi conserver la partie Helpdesk Micro. en fait je veux lagrandir GLPI avec un Module Sécurité, et si j'y arrive peut-être d'autres modules qui sait
J'esaierais d'être plus spécifique en fonction des erreurs et des problèmes que je rencontrerais.
A bientôt donc
Offline
Justement par rapport à l'authentification automatique par le LDAP (ou le CAS par exemple) :
Est-ce qu'il existe à l'heure actuelle une fonctionnalité qui permets de créer automatiquement un utilisateur avec des droits restreints si l'authentification sur le LDAP passe mais que l'utilisateur n'existe pas dans GLPI ??
En d'autres termes, est-il possible de créer des utilisateurs à la demande si l'authentification sur le LDAP a réussi ..
Merci
Marc
Offline
eh bien pour ma part, c'est le fonctionnement même de GLPI !
La première fois que tu t'authentifie via LDAP (AD) sur GLPI, il ajoute automatiquement un user dans la base avec des droits de post-only...
Xavier Caillaud
Blog GLPI Infotel
Offline
Génial! Merci!
Offline
Les utilisateurs sont creés quelle que soit l'authentification externe utilisée, mais attention aucun mot de passe n'est importé depuis la source d'authetification vers GLPI.
Les utilisateurs ainsi importés auront toujours besoin que la source soit accessible pour pouvoir se connecter.
Bazile Lebeau
Offline
Bonjour tout le monde, comme promis voici du nouveau sur l'identification automatique, en creusant un petit peu j'ai réussi
Attention : On part du principe que les utilisateurs qui vont se connecter à GLPI sont déjà identifiés sur une machine et que c'est la personne qui est identifié qui déclare l'intervention
Fichier concerné : Login.PHP, elle devient la page d'acceuil du site ou bien il faut faire une redirection automatique sans saise de l'index.php vers le login.php
Au début du Code, il faut rajouter après la définition "$user_present=1;" la récupération de l'utilisateur authentifié
$ident=substr(getenv('AUTH_USER'),-7);
NB on ne prend que les 7 caractères de droite (Chez moi le code utilisateur fait 7 caractères) pour ne pas récupéré le Domaine de Connexion situé sur les premiers caractères de Gauche jusqu'au "\"
Ensuite, il faut rajouter une condition de test après celle du Login_Name et Login_Password
la condition existante :
if (empty($_POST['login_name'])||empty($_POST['login_password']))
devient :
if ((empty($_POST['login_name'])||empty($_POST['login_password']))&&(empty($ident)))
Enfin, il faut modifier la zone de control concernant le LDAP Active Directory (le 5ème control d'identification)
On va en effet modifié l'appel de la fonction ldap_get_dn_active_directory pour ne plus utiliser le $_POST['login_name'] par la variable $ident.
donc à la place de :
$found_dn=$identificat->ldap_get_dn_active_directory($cfg_login['ldap']['host'],$cfg_login['ldap']['basedn'],$_POST['login_name'],$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass']);
On aura :
$found_dn=$identificat->ldap_get_dn_active_directory($cfg_login['ldap']['host'],$cfg_login['ldap']['basedn'],$ident,$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass']);
Le contrôme appronfondi de validation de l'utilisateur est dans mon cas inutile puisque si 'lutilisateur est authentifié sur la machine, cela me suffit
donc la section de controle suivante :
if ($found_dn!=false&&!empty($_POST['login_password'])){
$auth_succeded = $identificat->connection_ldap_active_directory($cfg_login['ldap']['host'],$found_dn,$_POST['login_name'],$_POST['login_password'],$cfg_login['ldap']['condition'],$cfg_login['ldap']['port']);
if ($auth_succeded) {
$identificat->extauth=1;
$user_present = $identificat->user->getFromDB($_POST['login_name']);
$update_list = array();
if ($identificat->user->getFromLDAP_active_directory($cfg_login['ldap']['host'],$found_dn,$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass'],$cfg_login['ldap']['fields'],$_POST['login_name'],$cfg_login['ldap']['condition'])) {
$update_list = array_keys($cfg_login['ldap']['fields']);
}
}
}
Devient :
if ($found_dn!=false){
$auth_succeded = true;
$identificat->extauth=1;
$user_present = $identificat->user->getFromDB($ident);
$update_list = array();
if ($identificat->user->getFromLDAP_active_directory($cfg_login['ldap']['host'],$found_dn,$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass'],$cfg_login['ldap']['fields'],$ident,$cfg_login['ldap']['condition'])){
$update_list = array_keys($cfg_login['ldap']['fields']);
}
}
j'espère que ça vous plait et que ça servira
Bonne journée à tous
et bon Courage
Offline
Bonjour,
Je viens d'essayer les modifs, mais nada cela ne marche pas
Dommage, je vais essayer de pousser le truc si quelqu'un là mis en place qu'il me fasse signe.
Jm0u
Navigateurs : Chrome
Installation : Package GLPI 0.84.2
Serveur : Apache 2 / Base : 5.0.15 / Langage : PHP 4.4.1 pl1 / PhpMyAdmin 2.6.4-pl3
Offline
Deja il faut vérifier si le nom du username remonte bien :
créer un fichier test.php avec dedans :
<?php
$ident = getenv("USERNAME");
echo $ident;
?>
Pour ma part, je viens de tester :
$ident=substr(getenv('AUTH_USER'),-7); chez moi ne fonctionne pas : en utilisant
$ident= getenv("USERNAME"); ca fonctionne !
mais il faut aussi remplacer dans les modifs : utf8_decode($ident) à la place de $ident
$found_dn=$identificat->ldap_get_dn_active_directory($cfg_login['ldap']['host'],$cfg_login['ldap']['basedn'],utf8_decode($ident),$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass']);
if ($found_dn!=false){
$auth_succeded = true;
$identificat->extauth=1;
$user_present = $identificat->user->getFromDB($ident);
$update_list = array();
if ($identificat->user->getFromLDAP_active_directory($cfg_login['ldap']['host'],$found_dn,$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass'],$cfg_login['ldap']['fields'],utf8_decode($ident),$cfg_login['ldap']['condition'])){
$update_list = array_keys($cfg_login['ldap']['fields']);
}
}
Xavier Caillaud
Blog GLPI Infotel
Offline
Bonjour,
Chez moi, ni AUTH_USER ni USERNAME ne renvoient quelque chose. J'avais déjà fait pas mal de recherches la dessus sans trouver de réponse à ce problème. Il me semble me rappeler que l'on ne pouvait récupérer le nom de l'utilisateur que sur IIS (sous toutes réserves car c'est déja loin).
J'avais proposé une autre solution (voir http://glpi.indepnet.org/forum/viewtopic.php?id=1562) mais elle ne fonctionne à priori que sous Windows.
Bien sûr, un solution en php serait meilleure.
GLPI 0.71.5 / OS : Windows 2000 Server - SP4 / Décompactage : 7zip
Installation : Package Ocs NG 1.0 - Navigateurs : Internet Explorer 7
Serveur : Apache 2.2.3 / Base : mysql 5.0.27 / Langage : PHP 5.2.0 / PhpMyAdmin 2.9.1.1
Offline
Il me semble me rappeler que l'on ne pouvait récupérer le nom de l'utilisateur que sur IIS (sous toutes réserves car c'est déja loin).
Ben ecoute j'utilise Xampp :
-chez moi, ca fonctionne
-a mon siège : ca fonctionne
-chez mon client : je teste demain matin
sous IIS :
$_SERVER["USERNAME"];
sous apache :
getenv('USERNAME'); ou $ident1 = $_ENV["USERNAME"];
tu peux essayer de regarder le
<?php
// Affiche toutes les informations, comme le ferait INFO_ALL
phpinfo();
?>
normalement tu dois trouver les infos lié à ces variables
Si elles n'apparaissent pas c'est qu'il y a un problème de conf..
J'avais proposé une autre solution (voir http://glpi.indepnet.org/forum/viewtopic.php?id=1562) mais elle ne fonctionne à priori que sous Windows.
Je l'utilise déjà
mais bon c'est encore plus simple pour les users si on peut eviter de s'authentifier !
La suite, demain
Last edited by tsmr (2006-01-26 20:16:34)
Xavier Caillaud
Blog GLPI Infotel
Offline
Mais pourquoi avec la même install, moi ça marche paaaaaaaaa ????:(
Tu as fait une configuration spécifique de php.ini ?
GLPI 0.71.5 / OS : Windows 2000 Server - SP4 / Décompactage : 7zip
Installation : Package Ocs NG 1.0 - Navigateurs : Internet Explorer 7
Serveur : Apache 2.2.3 / Base : mysql 5.0.27 / Langage : PHP 5.2.0 / PhpMyAdmin 2.9.1.1
Offline
Offline
Bon ben j'ai le même souci chez mon client :
les variables :
getenv('USERNAME');
$_ENV["USERNAME"];
ne sont pas affichés dans le phpinfo();
Donc ca peut po fonctionner !
Fo chercher maintenant d'ou cela peu venir...
Xavier Caillaud
Blog GLPI Infotel
Offline
Bon voici comment contourner le problème : Enfin pour l'instant c'est tout ce que j'ai trouvé :
Copie du login.php renommé en loginauto.php :
pour la variable $ident
$ident=$_POST['login_name'];
puis les modifs que j'ai decrite dans le post au dessus
if ((empty($_POST['login_name'])||empty($_POST['login_password']))&&(empty($ident)))
$found_dn=$identificat->ldap_get_dn_active_directory($cfg_login['ldap']['host'],$cfg_login['ldap']['basedn'],utf8_decode($ident),$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass']);
et
if ($found_dn!=false){
$auth_succeded = true;
$identificat->extauth=1;
$user_present = $identificat->user->getFromDB($ident);
$update_list = array();
if ($identificat->user->getFromLDAP_active_directory($cfg_login['ldap']['host'],$found_dn,$cfg_login['ldap']['rootdn'],$cfg_login['ldap']['pass'],$cfg_login['ldap']['fields'],utf8_decode($ident),$cfg_login['ldap']['condition'])){
$update_list = array_keys($cfg_login['ldap']['fields']);
}
}
puis
Copie du index.php renommé en index1.php :
modif
echo "<form action='loginauto.php' method='post' id='login_form'>";
renommage :
echo "<p ><span> <input type='submit' name='submit1' value='".$lang["buttons"][2]."' class='submit' /></span></p>";
puis j'utilise le code de VANB (voir http://glpi.indepnet.org/forum/viewtopic.php?id=1562)
et je rajoute à la fin de son script :
delay =0,1;
sub=document.forms[0].submit();
setTimeout(sub, delay);
pour qu'il lance automatiquement le loginauto.php
Appel de index1.php au démarrage (ou renommage bien sur)
Donc ca ne fonctionne que sous IE, bien sur car firefox n'incrémente pas tout seul le username dans le formulaire.
Last edited by tsmr (2006-01-27 11:31:08)
Xavier Caillaud
Blog GLPI Infotel
Offline
bonjour,
Est qu'il serait possible que tu nous mette ton code de la pasge autologin.php et index1.php car j'ai essayer mais sa na pas l'aire de marcher, mais peut etre que je ne met pas les bouts de code au bon endroit sa m'aidera a voir ou il y a un probleme.
j'utilise la version 0.65 rc2, sur un serveur linux avec authentification à AD.
GLPI 0.80.5, OCS-NG 1.3.3 / Centos 5.6 / Apache 2.2.3-45 / PHP 5.1.6 / Mysql 5.0.77
FusionInventory 2.3.6 / Agent 2.1.9
Navigateurs : Internet Explorer 9 / firefox 4
test : GLPI 0.80.5
Offline
Voici mon patch. Il permet de s'authentifier via HTTP (en se basant sur l'authentification faite par le serveur HTTP).
Si vous utilisez Apache2 et Active Directory, utilisez le mod_auth_sspi.
Si vous utilisez Apache et Active Directory, utilisez le mod_auth_ntlm.
Si vous utilisez IIS, ça marchera tout seul.
Note : le patch a été écrit pour la version 0.65
--- index.php.orig 2006-03-28 23:19:16.000000000 +0200
+++ index.php 2006-04-03 16:57:03.880288900 +0200
@@ -51,7 +51,16 @@
glpi_header("login.php");
}
-
+ if ( isset($_SERVER["REMOTE_USER"])){
+ $pos = stripos($_SERVER["REMOTE_USER"],"\\");
+ if (! $pos === false ){
+ $login = substr($_SERVER["REMOTE_USER"], $pos + 1);
+ if ( $login != '' ){
+ header("Location: login.php?login_name=".$login);
+ }
+ }
+ }
+
// Send UTF8 Headers
header("Content-Type: text/html; charset=UTF-8");
// Start the page
--- login.php.orig 2006-03-28 23:19:16.000000000 +0200
+++ login.php 2006-04-03 17:04:31.066688000 +0200
@@ -62,6 +62,18 @@
$auth_succeded=false;
+$http_auth = false;
+if ( isset($_SERVER["REMOTE_USER"])){
+ $pos = stripos($_SERVER["REMOTE_USER"],"\\");
+ if (! $pos === false ){
+ $login = substr($_SERVER["REMOTE_USER"], $pos + 1);
+ if ( $login != '' ){
+ $_POST['login_name'] = $login;
+ $http_auth = true;
+ }
+ }
+}
+
if (!isset($_POST["noCAS"])&&!empty($cfg_glpi["cas_host"])) {
include ($phproot . "/glpi/CAS/CAS.php");
phpCAS::client(CAS_VERSION_2_0,$cfg_glpi["cas_host"],intval($cfg_glpi["cas_port"]),$cfg_glpi["cas_uri"]);
@@ -77,7 +89,7 @@
if (isset($_POST["noCAS"])) $_SESSION["noCAS"]=1;
if (!$auth_succeded) // Pas de tests en configuration CAS
-if (empty($_POST['login_name'])||empty($_POST['login_password'])){
+if ((empty($_POST['login_name'])||empty($_POST['login_password'])) && !$http_auth){
$identificat->err=$lang["login"][8];
} else {
@@ -85,7 +97,7 @@
// exists=1 -> exist with password
// exists=2 -> exist without password
$exists=$identificat->userExists($_POST['login_name']);
-
+
// Pas en premier car sinon on ne fait pas le blankpassword
// First try to connect via le DATABASE
if ($exists==1){
@@ -99,6 +111,26 @@
}
+ // try HTTP authentication
+ if ($http_auth){
+
+ $found_dn=false;
+ $auth_succeded=0;
+ $found_dn=$identificat->ldap_get_dn_active_directory($cfg_glpi["ldap_host"],$cfg_glpi["ldap_basedn"],$_POST['login_name'],$cfg_glpi["ldap_rootdn"],$cfg_glpi["ldap_pass"],$cfg_glpi["ldap_port"]);
+
+ if ($found_dn!=false){
+ print "ici";
+ $auth_succeded = true;
+ $identificat->extauth=1;
+ $user_present = $identificat->user->getFromDB($_POST['login_name']);
+ $update_list = array();
+ if ($identificat->user->getFromLDAP_active_directory($cfg_glpi["ldap_host"],$cfg_glpi["ldap_port"],$found_dn,$cfg_glpi["ldap_rootdn"],$cfg_glpi["ldap_pass"],$cfg_glpi['ldap_fields'],$_POST['login_name'],$cfg_glpi["ldap_condition"])) {
+ $update_list = array_keys($cfg_glpi['ldap_fields']);
+ }
+ }
+ }
+
+
// Second try IMAP/POP
if (!$auth_succeded&&!empty($cfg_glpi["imap_auth_server"])) {
$auth_succeded = $identificat->connection_imap($cfg_glpi["imap_auth_server"],utf8_decode($_POST['login_name']),utf8_decode($_POST['login_password']));
@@ -165,7 +197,7 @@
$update_list = array_keys($cfg_glpi['ldap_fields']);
}
}
- }
+ }
}
} // Fin des tests de connexion
Last edited by blink38 (2006-05-09 08:29:16)
Offline
Bon je comprend rien au php mais vé essayez de faire marcher ton bout de code....
En tout cas Merci ....
Offline
tenez un lien ou on peu telecharger les deux mods
http://www.gknw.at/development/apache/h … 2/modules/
http://www.gknw.at/development/apache/a … 2/modules/
j'utilise la version 0.65 de GLPI, je suis sous windows avec apache 1.3 et sa n'a pas l'aire de marcher il demande toujours le s'authentifier
GLPI 0.80.5, OCS-NG 1.3.3 / Centos 5.6 / Apache 2.2.3-45 / PHP 5.1.6 / Mysql 5.0.77
FusionInventory 2.3.6 / Agent 2.1.9
Navigateurs : Internet Explorer 9 / firefox 4
test : GLPI 0.80.5
Offline
Je vous donne quelques compléments d'information pour Apache 2 (celui fourni avec Xampp dernière version)
Le module mod_auth_sspi.so est inclus dans la distribution. Il suffit de décommenter la ligne :
LoadModule sspi_auth_module modules/mod_auth_sspi.so
dans le fichier de configuration d'Apache (\apache\conf\httpd.conf)
Il faut également ajouter (à la fin du même fichier par exemple) :
#glpi configuration
<Directory "C:/OCSinventoryNG/xampp/htdocs/glpi>
Options None
Order allow,deny
Allow from all
AuthName "Accès restreint"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
require valid-user
</Directory>
en adaptant le chemin de votre répertoire glpi selon votre configuration.
GLPI 0.71.5 / OS : Windows 2000 Server - SP4 / Décompactage : 7zip
Installation : Package Ocs NG 1.0 - Navigateurs : Internet Explorer 7
Serveur : Apache 2.2.3 / Base : mysql 5.0.27 / Langage : PHP 5.2.0 / PhpMyAdmin 2.9.1.1
Offline
Bonjour,
j'ai suivi ce post avec intéret mais j'avoue que ça reste tres brouillons pour quelqu'un comme moi qui ne maitrise pas le php, je pense que le code de blink38 à l'air efficace et j'aimerais bien le tester mais je n'arrive pas a le faire fonctionner. quand je lance ma page d'index j'ai ce message:
"Parse error: syntax error, unexpected T_IF in D:\Applications\xampp\htdocs\glpi065rc2\login.php on line 111"
Quelqu'un a t il réussi a faire marcher cette fonction ??
Merci d'avance ;-)
PS: ne faite pas attention au glpi065rc2 dans le chemin car c'est bien un 0.65 final ^_^
PS2: Désolé je modifie mon post au fur et a mesure que je progresse, donc meme message maintenant mais à la ligne 122.
Je commence à devenir chèvre .... lol
Je place mes fichiers index.php et login.php sur un compte au cas ou une âme charitable arriverai à trouver mon problème : Login.php et Index.php
En attendant je vais continuer à chercher....
Last edited by Garga (2006-05-02 20:40:33)
Offline