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

EDI, CMS, Outils, Scripts et API PHP Discussion :

PHP windows : récupérer login windows


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut PHP windows : récupérer login windows
    Bonjour,
    Je cherche de l'aide pour récupérer en PHP (php 5.2.5 sur wamp apache 2.2.8 sur windows server 2003) le login windows de l'utlisateur. Il faudrait que ça marche pour Firefox 3 et IE 8 (je suis en intranet), sans interface de connexion (ie pas de .htaccess, ...).
    J'ai trouvé pas mal de petites choses sur le web, notamment à base de apache_request_headers, mais rien de bien satisfaisant pour moi.
    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je serais surpris que ce soit possible, ca poserait un gros problème de sécurité.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonjour,
    J'ai trouvé ce "vieux" script
    Je remercie l'auteur de l'avoir publié il y a quelques années, car je cherche quelque chose comme ça, ... mais je souhaiterais qqch de ce style, mais qui marche avec les versions actuelles de IE et Firefox...
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    <?php
    /***********************************************************************
    
    ************************************************************************
    *
    * PHP NTLM GET LOGIN
    * Version 0.2.1
    * <a href="http://www.secusquad.com/ntlm/" target="_blank">http://www.secusquad.com/ntlm/</a>
    * Copyright (c) 2004 Nicolas GOLLET ( Nicolas (dot) gollet (at) secusquad (dot) com )
    * Copyright (c) 2004 Flextronics Saint-Etienne
    *
    * This program is free software. You can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License.
    *
    ***********************************************************************/
     
    session_start();
     
    $headers = apache_request_headers(); // Récupération des l'entêtes client
     
    if (@$_SERVER['HTTP_VIA'] != NULL){ // nous verifions si un proxy est utilisé : parceque l'identification par ntlm ne peut pas passer par un proxy
    echo "Proxy bypass!";
    }
    elseif($headers['Authorization'] == NULL){ //si l'entete autorisation est inexistante
    header( "HTTP/1.0 401 Unauthorized" ); //envoi au client le mode d'identification
    header( "WWW-Authenticate: NTLM" ); //dans notre cas le NTLM
    exit; //on quitte
     
    }
     
    if(isset($headers['Authorization'])) //dans le cas d'une authorisation (identification)
    {
    if(substr($headers['Authorization'],0,5) == 'NTLM '){ // on vérifit que le client soit en NTLM
     
    $chaine=$headers['Authorization'];
    $chaine=substr($chaine, 5); // recuperation du base64-encoded type1 message
    $chained64=base64_decode($chaine); // decodage base64 dans $chained64
     
    if(ord($chained64{8}) == 1){
    // |_ byte signifiant l'etape du processus d'identification (etape 3)
     
    // verification du drapeau NTLM "0xb2" à l'offset 13 dans le message type-1-message (comp ie 5.5+) :
    if (ord($chained64[13]) != 178){
    echo "NTLM Flag error!";
    exit;
    }
     
    $retAuth = "NTLMSSP".chr(000).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(040).chr(000).chr(000).chr(000).chr(001).chr(130).chr(000).chr(000);
    $retAuth .= chr(000).chr(002).chr(002).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000);
    $retAuth .= chr(000).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
     
    $retAuth64 =base64_encode($retAuth); // encode en base64
    $retAuth64 = trim($retAuth64); // enleve les espaces de debut et de fin
    header( "HTTP/1.0 401 Unauthorized" ); // envoi le nouveau header
    header( "WWW-Authenticate: NTLM $retAuth64" ); // avec l'identification supplémentaire
    exit;
     
    }
     
    else if(ord($chained64{8}) == 3){
    // |_ byte signifiant l'etape du processus d'identification (etape 5)
     
    // on recupere le domaine
    $lenght_domain = (ord($chained64[31])*256 + ord($chained64[30])); // longueur du domain
    $offset_domain = (ord($chained64[33])*256 + ord($chained64[32])); // position du domain.
    $domain = str_replace("\0","",substr($chained64, $offset_domain, $lenght_domain)); // decoupage du du domain
     
    //le login
    $lenght_login = (ord($chained64[39])*256 + ord($chained64[38])); // longueur du login.
    $offset_login = (ord($chained64[41])*256 + ord($chained64[40])); // position du login.
    $login = str_replace("\0","",substr($chained64, $offset_login, $lenght_login)); // decoupage du login
     
    if ( $login != NULL){
    // stockage des données dans des variable de session
    $_SESSION['Login']=$login;
    header("Location: newpage.php");
    exit;
    }
    else{
    echo "NT Login empty!";
    }
     
     
    }
    }
     
    }
     
    ?>

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/06/2014, 12h02
  2. Récupérer login windows
    Par vva dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/06/2008, 16h11
  3. Réponses: 1
    Dernier message: 06/06/2007, 18h20
  4. [2.0][C#] Récupérer le login windows.
    Par Dark_Setsuna dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/04/2007, 13h14
  5. Réponses: 2
    Dernier message: 20/04/2007, 17h15

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