Page 1 sur 1

Module SSO - Compatibilité IIS Serveur

Posté : ven. 29 juin 2018 15:47
par imohsen
Bonjour,

Merci encore une fois pour votre solution.

Pouvez-vous ajouter la compatibilité SSO pour IIS Server SVP ?
En effet, actuellement votre code est compatible avec Windows via WAMP ou autre webserver (Apache) mais les utilisateurs IIServer sont laissés à la dérive avec un SSO non fonctionnel, ce qui est donc dommage.

Voici les modifications que j'ai appliqué pour que la connexion SSO fonctionne correctement sur IIS :

Dans le fichier root/index.php

Ligne 915 :

remplacer

Code : Tout sélectionner

$ssologin=explode('@',$_SERVER['REMOTE_USER']);
par

Code : Tout sélectionner

$ssologin=explode('\\',$_SERVER['REMOTE_USER']);
ligne 918 :

remplacer

Code : Tout sélectionner

$qry->execute(array('login' => $ssologin[0],'disable' => 0));
par

Code : Tout sélectionner

$qry->execute(array('login' => $ssologin[1],'disable' => 0));
Sauvegarder et la connexion SSO depuis IIS est à présent opérationnelle.

Voici une petite idée à intégrer à votre solution pour les prochaines MAJ (histoire que je puisse également les réaliser sans avoir à modifier du code lors de chaque maj). :)

Code : Tout sélectionner

if(preg_match('#Microsoft-IIS#is', $_SERVER["SERVER_SOFTWARE"]))
    $typeSrv = "MS";

if($typeSrv == "MS")
    $ssologin=explode('\\',$_SERVER['REMOTE_USER']);
else
    $ssologin=explode('@',$_SERVER['REMOTE_USER']);

if($typeSrv == "MS")
    $qry->execute(array('login' => $ssologin[0],'disable' => 0));
else
    $qry->execute(array('login' => $ssologin[1],'disable' => 0));

Re: Module SSO - Compatibilité IIS Serveur

Posté : ven. 29 juin 2018 16:43
par Flox
Bonjour,

merci pour votre contribution et vos recherches, l'intégration sera disponible dans la version 3.1.34.

Après je vous recommande tout de même l'utilisation d'Apache avec Linux, pour des raisons de performances et de sécurité.

Cdt

Re: Module SSO - Compatibilité IIS Serveur

Posté : lun. 2 juil. 2018 17:19
par imohsen
Bonjour Flox,

Merci d'avoir accepté cette intégration.

Si j'aurais du utiliser un autre server web je me serais plutôt tourné sur Nginx (les goûts et les couleurs ça ne se discute pas).
Concernant la sécurité, Apache, IIS, Ngix se valent très bien - lorsque ceux-ci sont bien configurés - et tout dépand aussi du besoin.
De plus notre système de ticket (votre solution) n'est accessible que sur notre intranet et n'est pas voué a émerger sur la toile - sauf via un accès VPN SSL.

Afin de faire le moins de modification et pour une meilleure lisibilité/propreté de code, je vous suggère juste le remplacement des deux lignes par celles ci-dessous (ce qui évite une multitude de if/elseif/else et d’instance de variables complémentaires) :

915 :

Code : Tout sélectionner

$ssologin=explode((preg_match('#Microsoft-IIS#is', $_SERVER["SERVER_SOFTWARE"]) ? "\\":"@"),$_SERVER['REMOTE_USER']);
918 :

Code : Tout sélectionner

$qry->execute(array('login' => (preg_match('#Microsoft-IIS#is', $_SERVER["SERVER_SOFTWARE"]) ? $ssologin[1]:$ssologin[0]),'disable' => 0));
Cordialement