28 janvier 2012
[GLPI] Authentification automatique (SSO)
Cette procédure est valable pour une installation sur une Debian utilisant un serveur web Apache avec une version de GLPI 0.80.
Côté serveur : Apache
Installation du module pour l’authentification :
apt-get install libapache2-authenntlm-perl
Activation du module :
a2enmod authnz_ldap
Configuration d’apache (/etc/apache2/sites-available/default) :
PerlModule Apache2::AuthenNTLM <Directory "/var/www/glpi"> PerlAuthenHandler Apache2::AuthenNTLM AuthType ntlm,basic AuthName paipartners require valid-user PerlAddVar ntdomain "domain dc1 dc2" PerlSetVar defaultdomain domain PerlSetVar splitdomainprefix 1 PerlSetVar ntlmdebug 0 (1 ou 2 pour test) PerlSetVar ntlmauthoritative off </Directory>
Côté navigateur : Internet explorer et Mozilla firefox
Pour bénéficier sur SSO sur IE il suffit d’ajouter le serveur GLPI aux sites de confiance (ex : http://glpi).
La même chose est à faire du côté de Firefox via le « about:config » et le champ « network.automatic-ntlm-auth.trusted-uris »
(Chromium ne nécessite en théorie aucune configuration supplémentaire)
Côté système d’exploitation : Windows 7
Pour pouvoir faire du SSO sous Seven il faut passer à « 1 » la valeur « LmCompatibilityLevel » de la clé de registre « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa »
21 Comments
Bonjour,
Je rencontre quelques petits problèmes lors de la config d’apache. Et j’avoue, je suis un peu débutant dans ce domaine.
Pourriez vous m’aider, svp en m’indiquant quels champs il faut modifier (dans le fichier exemple de votre présentation).
Par avance merci de votre retour.
Cordialement,
Salut Jordan,
Normalement tu as juste à changer :
– le Directory de GLPI (Directory « /var/www/glpi ») par le dossier où se trouve ton site web GLPI
– les paramètres du domaine (« domain dc1 dc2″) par le nom de ton domaine et le nom de ton ou tes contrôleurs de domaine
– le domaine par défaut (domain) par le nom de ton domaine, comme renseigné sur la ligne du dessus
Johan
Bonjour,
J’ai essayé votre tuto mais quand j’essaye de relancer mon service apache2 il fail. J’ai essayé en copiant tel quel dans le defaut puis en essayant de l’adapter mais cela n’a pas fonctionné.
Sinon l’idée est très bonne de regrouper votre expérience sur un blog.
Merci d’avance
Salut,
Quel est le message d’erreur ?
Peux-tu afficher ta configuration ?
Johan
Alors j’ai un peu avancé ma première erreur et que j’avais laissé cette ligne : »PerlSetVar ntlmdebug 0 (1 ou 2 pour test) » tel quel. Je l’ai mis a 1 est mon service a pu démarrer par contre je n’ai pas été « automatiquement » identifié, je m’explique au moment de la connexion au glpi j’ai eu une fenêtre windows me demandant de m’authentifier et là paf
Internal Server Error
ma config :
Ubuntu Server 11.04
Apache2 2.2.17
MySQL 5.1.63 PHP5.3.5
GLPI 0.83.7
Alors ça fonctionne par contre n’y a-t-il pas un moyen pour que le personne soit authentifié directement?
Tu as une fenêtre comme celle ci : http://infernal-quack.net/files/web_lab/chrome_picture-in-picture_attack/real.png ?
Si oui, quel navigateur utilises-tu ?
Si non, quel genre de fenêtre s’affiche ?
Oui j’ai une fenêtre comme celle là ça me le fait sur firefox et sur IE.
As-tu configuré IE et Firefox comme expliqué ? (sites de confiance)
De même si tu utilises Windows 7, as-tu modifié la valeur de clé de registre ?
Si tu parles de ça
Oui je l’ai mis.
Si je me souviens bien il faut mettre directement le nom du serveur (je ne suis plus sur).
Tu es sous quel OS alors ?
sur le poste client xp pro et sur le serveur une ubuntu server 11.04
Normalement il n’y a rien d’autre à faire. Avec IE c’est pareil ?
oui et « l’authentification Windows intégrée » est bien coché.
http://nsa34.casimages.com/img/2013/05/21/130521095753611352.jpg
Bonjour,
Est-il possible de s’identifier avec un compte du GLPI mais qui n’est pas dans le domaine ?
Je suis sous debian avec un serveur apache 2.2.16 et GLPI 0.83.8
Car j’ai un message d’erreur :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Apache/2.2.16 (Debian) Server at 192.168.50.118 Port 80
Merci pour les reponses par avance.
Cordialement
Bonjour,
Il est en effet possible de se connecter avec des comptes qui ne sont pas dans l’AD. J’utilisais par exemple l’utilisateur « glpi » qui était super admin.
Du coup je ne peux pas trop te dire d’où vient ton problème. Peut-être as-tu spécifié quelque part que seul les utilisateurs AD peuvent se connecter.
Merci pour la réponse.
J’utilise le code que tu as mis plus haut.
PerlModule Apache2::AuthenNTLM
PerlAuthenHandler Apache2::AuthenNTLM
AuthType ntlm,basic
AuthName paipartners
require valid-user
PerlAddVar ntdomain « mondomain.com serveur-du-domain »
PerlSetVar defaultdomain mondomain.com
PerlSetVar splitdomainprefix 1
PerlSetVar ntlmdebug 1
PerlSetVar ntlmauthoritative off
J’ai surement fait une erreur dans le fichier de conf?
Normalement le code est bon. Je parlais plus d’une option dans l’interface web directement du coup.
Tu arrives bien à te connecter avec un user de l’AD n’est-ce pas ?
J’ai pas encore testé avec un user du domaine.
Si je mets pas le code j’arrive a me connecter avec n’importe quel user.
Le GLPI est pour plusieurs entreprises différentes.
J’ai recherché dans les log voici les soucis :
[Fri Jun 07 16:06:56 2013] [error] [client 192.168.50.25] File does not exist: /var/www/favicon.ico
> [Fri Jun 07 16:01:51 2013] [error] [client 192.168.50.25] File does not exist: /var/www/favicon.ico
> [Fri Jun 07 16:02:39 2013] [error] [client 192.168.50.25] File does not exist: /var/www/favicon.ico
> [Fri Jun 07 16:04:17 2013] [error] [client 192.168.50.25] File does not exist: /var/www/favicon.ico
> [Fri Jun 07 16:06:49 2013] [notice] caught SIGTERM, shutting down
> [Fri Jun 07 16:06:51 2013] [notice] Apache/2.2.16 (Debian) PHP/5.3.3-7+squeeze3 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.10.1 configured — resuming normal operations
> [Fri Jun 07 16:06:55 2013] [error] Bad/Missing NTLM/Basic Authorization Header for /glpi/front/auth.others.php
> [Fri Jun 07 16:06:55 2013] [error] Connect to SMB Server failed (pdc = serveur2000 bdc = domain = farouest.farouest error = -11/0) for /glpi/front/auth.others.php
> [Fri Jun 07 16:06:55 2013] [error] Cannot get nonce
> [Fri Jun 07 16:06:55 2013] [crit] [client 192.168.50.25] configuration error: couldn’t check user. Check your authn provider!: /glpi/front/auth.others.php, referer: http://192.168.50.118:8080/glpi/front/auth.others.php
, j’ai activé les authentifications sur le serveur, J’ai mis la variable remote user et username dans Champ de stockage de l’identifiant dans la requête HTTP ça ne marche pas ….
Voici mon fichier glpi/front/auth.others.php
define(‘GLPI_ROOT’, ‘..’);
include (GLPI_ROOT . « /inc/includes.php »);
Session::checkRight(« config », « w »);
$config = new Config();
//Update CAS configuration
if (isset($_POST[« update »])) {
$config->update($_POST);
Html::redirect($CFG_GLPI[« root_doc »] . « /front/auth.others.php »);
}
if (!isset($_GET[« id »])) {
$_GET[« id »]= » »;
}
Html::header($LANG[‘title’][14], $_SERVER[‘PHP_SELF’], »config », »extauth », »others »);
Auth::showOtherAuthList();
Html::footer();
?>