IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP SSO Windows


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut PHP SSO Windows
    Bonjour,

    J'ai un serveur Apache 2.2.17 avec PHP Version 5.3.5 (WAMP 2.1).
    J'aimerai réaliser un site intranet pour l'entreprise.
    Les utilisateurs de ce site seront essentiellement sous Windows XP SP3 voir Windows 7.
    J'aimerai leur éviter d'avoir à retapper leur login/password et utiliser leur compte Windows (Active Directory) afin de leur accorder l'accès aux sites et éventuellement de graduer ces accès (privilèges).

    Concernant le browser, certains utilisent IE 8.* ou IE 9.* et d'autre Firefox 4.* ou Firefox 5.*, voir Chrome.
    Bien entendu le SSO devra être fonctionnel pour toutes ces versions.

    J'ai trouvé une piste pour IE 8.* et IE 9.* mais non fonctionnel avec Firefox *.* ni Chrome (normal c'est du VBs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script language="VBscript">
    	Dim X
    	set X = createobject("WSCRIPT.Network")
    	dim U
    	U=x.UserName
    	MsgBox "username: " & U
    </script>
    J'ai vu parler de mod_auth_sspi, mais je n'ai pas trouvé de vraies docs.

    Existe-il un autre moyen de faire du SSO facilement avec PHP/Windows ?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    via un module apache (en kerberos par exemple) l’identifiant est envoyer dans les entêtes

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    via un module apache (en kerberos par exemple) l’identifiant est envoyer dans les entêtes
    "In order to use the Negotiate method you need a browser supporting it (currently standard IE6.0 or Mozilla with the negotiateauth extension)."

    Faut installer une extension sur tous les Firefox ?

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 109
    Par défaut
    J'ai mis de côté les modules, plugins et compagnie parceque je ne comprenais rien.
    J'ai préféré ne pas utiliser de VBs, de Jscript, de JavaScript ni d'ActiveX.

    Et j'utilise NTLM qui fonctionne aussi bien sous IE que sous FF (il faut activer le NTLM comme précisé ici : http://sivel.net/2007/05/firefox-ntlm-sso/ : about:config > network.automatic-ntlm-auth.trusted-uris > modifier "adresse,adresse,adresse,adresse")

    http://siphon9.net/loune/2007/10/sim...t-ntlm-in-php/

    Je n'ai rien installer de particulier, et je suis entrain d'essayer de comprendre pourquoi et comment ça marche.

    Au cas où le devienderait off, voici le code à utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
    $headers = apache_request_headers();
     
    if (!isset($headers['Authorization']))
    {
    	header('HTTP/1.1 401 Unauthorized');
    	header('WWW-Authenticate: NTLM');
    	exit;
    }
     
    $auth = $headers['Authorization'];
     
    if (substr($auth,0,5) == 'NTLM ')
    {
    	$msg = base64_decode(substr($auth, 5));
    	if (substr($msg, 0, 8) != "NTLMSSP\x00")
    		die('error header not recognised');
    	if ($msg[8] == "\x01") {
    		$msg2 = "NTLMSSP\x00\x02\x00\x00\x00".
    		"\x00\x00\x00\x00". // target name len/alloc            
    		"\x00\x00\x00\x00". // target name offset             
    		"\x01\x02\x81\x00". // flags             
    		"\x00\x00\x00\x00\x00\x00\x00\x00". // challenge             
    		"\x00\x00\x00\x00\x00\x00\x00\x00". // context             
    		"\x00\x00\x00\x00\x00\x00\x00\x00"; // target info len/alloc/offset           
    		header('HTTP/1.1 401 Unauthorized');         
    		header('WWW-Authenticate: NTLM '.trim(base64_encode($msg2)));
    		exit;
    	}
    	else if ($msg[8] == "\x03")
    	{
    		function get_msg_str($msg, $start, $unicode = true)
    		{
    			$len = (ord($msg[$start+1]) * 256) + ord($msg[$start]);
    			$off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]);
    			if ($unicode)
    				return str_replace("\0", '', substr($msg, $off, $len));
    			else
    				return substr($msg, $off, $len);
    		}
    		$user = get_msg_str($msg, 36);
    		$domain = get_msg_str($msg, 28);
    		$workstation = get_msg_str($msg, 44);
    		print "You are $user from $domain/$workstation";
    	}
    }
    ?>
    EDIT : Moi ça fonctionne pour de l'intranet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. oracle-interface PHP sous windows
    Par nonaM1982 dans le forum Oracle
    Réponses: 1
    Dernier message: 17/02/2006, 17h13
  2. explorateur fichier php sur windows 2003
    Par super-manu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/02/2006, 14h42
  3. [LDAP] Où trouver ce module PHP pour Windows
    Par hutchuck dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/11/2005, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo