Module SSO - Compatibilité IIS Serveur

Contribuer au projet de part vos connaissances: PHP, HTML, CSS, SQL, JS ....
Répondre
imohsen
Gsup LEVEL 2
Messages : 41
Enregistré le : jeu. 28 déc. 2017 14:26

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));

GestSup: 3.2.4 | OS: W2K2019 | Web: IIS 8. PHP: 7.3.25
------------------| OS: Debian10 | SQL : MySQL 8.0.2
Avatar du membre
Flox
Administrateur du site
Messages : 8972
Enregistré le : jeu. 21 juin 2012 19:00

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
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.4 | https://doc.gestsup.fr/
imohsen
Gsup LEVEL 2
Messages : 41
Enregistré le : jeu. 28 déc. 2017 14:26

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

GestSup: 3.2.4 | OS: W2K2019 | Web: IIS 8. PHP: 7.3.25
------------------| OS: Debian10 | SQL : MySQL 8.0.2
Répondre