Welcome to PHPClub
Переходим на PHP 5.3.3! Ищем хорошего PHP-разработчика Москва,
офис ~90-150К
Боишься нашего дизайна?
поиск:
   
 Начало | Настройки | Расширенный поиск | РегистрацияПосмотреть новые сообщения 
  
PHP Club форумы: > Разное > PHP & W$NDOWS > Вытаскивание имени виндового пользователя
Страниц (2): « 1 [2] |  

Автор
Тема ОТВЕТИТЬ
Kapacb
Новичок

На форуме с: Sep 2002
Cообщений: 79
Город: Moscow, Russia

Есть кто нибудь кто пользовался кодом, приведенным Vetal?
Код работает, все отлично, вот только после него перестают передаваться переменные методом POST
Начинает передаваться только после открытия заново IE? Проблема судя по всему в заголовках, а вот в чем именно - хз...


__________________
Техника в руках идиота - груда металолома!

Old Post 27.02.06 09:09 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
kinrew
Новичок

На форуме с: Jul 2006
Cообщений: 3
Город:

Добрый день!
Спасибо, код приведённый Vetal работает, но только для пользователей, которые не в домене (показывает окошко браузера с запросом на логин и пароль, после ввода которых пишет "Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci", хотя используется IE).
Примечание: иногда приходится включать опцию настроек безопасности "Автоматический вход в сеть с текущим именем пользователя и паролем", иначе показывает окошко браузера с запросом на логин и пароль, после ввода которых пишет "Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci", хотя используется IE

Скачал mod_ntlm, но вот инструкций по настройке не нашёл. Помогите пожалуйста с настройкой (не совсем понял приведённые на форуме отрывки). mod_ntlm поможет с автоматической авторизацией доменных пользователей?

Old Post 31.07.06 07:52 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
SiMM
Старожил PHPCluba

На форуме с: Jan 2004
Cообщений: 6393
Город: Чебоксары, Россия

http://google.ru/search?q=mod_ntlm уже читали?

Old Post 31.07.06 19:23 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
kinrew
Новичок

На форуме с: Jul 2006
Cообщений: 3
Город:

Код, приведённый Vetal, полностью рабочий и работает без дополнительных модулей.
Иногда браузер выдаёт окошко с запросом логин+пароль, тогда нужно добавить сайт или страницу, где выполняется этот код в список надёжных узлов.

Old Post 15.08.06 09:41 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
GRisly
Новичок

На форуме с: Sep 2006
Cообщений: 7
Город: Piter

 
Автор оригинала: Kapacb
Есть кто нибудь кто пользовался кодом, приведенным Vetal?
Код работает, все отлично, вот только после него перестают передаваться переменные методом POST
Начинает передаваться только после открытия заново IE? Проблема судя по всему в заголовках, а вот в чем именно - хз...


Та же проблема

Old Post 22.09.06 12:14 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
kinrew
Новичок

На форуме с: Jul 2006
Cообщений: 3
Город:

 
Автор оригинала: GRisly
Та же проблема


Для избежания этой проблемы нужно включать приведённый код во все страницы

Old Post 22.09.06 17:37 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
boban
Новичок

На форуме с: Oct 2006
Cообщений: 2
Город:

 
Автор оригинала: Vetal

<?php

/***********************************************************************
*    PHP NTLM GET LOGIN 
*    Version 0.2
* ====================================================  
*                                        
* Copyright (c) 2004 Nicolas GOLLET (Nicolas.gollet@secusquad.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.         
*
***********************************************************************/

$headers apache_request_headers();    // Recuperation des l'entetes client
    

if($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 verifit que le client soit en NTLM
    
    
        
$chaine=$headers['Authorization'];                  
        
$chaine=substr($chaine5);             // 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" a l'offset 13 dans le message type-1-message :
        
if (ord($chained64[13]) != 178){
        echo 
"Votre navigateur Internet n'est pas compatible avec le NTLM, utiliser IE...Merci";
        exit;
        }
            
$retAuth "NTLMSSP";                   
            
$retAuth .= chr(0);                  
            
$retAuth .= chr(2);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(40);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(1);
            
$retAuth .= chr(130);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(2);
            
$retAuth .= chr(2);
            
$retAuth .= chr(2);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
$retAuth .= chr(0);
            
            
$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 supplementaire
            
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 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 substr($chained64$offset_login$lenght_login); // decoupage du login
        
        // l'host   
        
$lenght_host = (ord($chained64[47])*256 ord($chained64[46])); // longueur de l'host.
        
$offset_host = (ord($chained64[49])*256 ord($chained64[48])); // position de l'host.  
        
$host substr($chained64$offset_host$lenght_host); // decoupage du l'host  
        
        

        
echo "Domain is  : $domain";
        echo 
"<br>Login is : $login";
        echo 
"<br>host is  : $host";
        
        }

    }

}


?>


У меня не получается сравнить $login со своим логином ($login2):
Значит: if ($login==$login2) {echo ("login = login2");} else {echo ("login не равен login2");}
Всегда выдается сообщение о том что логины не равны. Даже выважу их на экран вижу что равны, а скрипт говорит что не равны!
В чем м/б проблема, подскажите, плз!
З.Ы. Локалка, AD, скрипт выдает правильные: Домен, логин и хост.

Old Post 11.10.06 11:50 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
GRisly
Новичок

На форуме с: Sep 2006
Cообщений: 7
Город: Piter

 
Автор оригинала: boban
У меня не получается сравнить $login со своим логином ($login2):
Значит: if ($login==$login2) {echo ("login = login2");} else {echo ("login не равен login2");}
Всегда выдается сообщение о том что логины не равны. Даже выважу их на экран вижу что равны, а скрипт говорит что не равны!
В чем м/б проблема, подскажите, плз!
З.Ы. Локалка, AD, скрипт выдает правильные: Домен, логин и хост.



$strLogin 
='';
              for(
$i=0;$i<strlen($login);$i++)
              {
                      if(
ord($login[$i])!="0x00")
                         
$strLogin.=$login[$i];
              }

Мой выход из этого положения

Old Post 11.10.06 12:10 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
zerkms
TDD infected

На форуме с: Jan 2004
Cообщений: 4929
Город: Komsomolsk-na-Amure, Russia

GRisly
какой ужасный выход...
наверное лучше бы вы и не выходили


__________________
tvfёdor - оперативно уведомляет о раздачах rutracker

Old Post 11.10.06 14:00 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
boban
Новичок

На форуме с: Oct 2006
Cообщений: 2
Город:

 
Автор оригинала: GRisly

$strLogin 
='';
              for(
$i=0;$i<strlen($login);$i++)
              {
                      if(
ord($login[$i])!="0x00")
                         
$strLogin.=$login[$i];
              }

Мой выход из этого положения


Спасиба!
ВЫход хороший, подскажи пож-та как сделать так чтобы скрипт все буквы преобразовал в прописные или в строчные,
бывает что получаемый логин начинается с заглавной буквы, а базе-сравнения логин прописан строчными буквами и на выходе разные получаются логины.

Old Post 12.10.06 14:30 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
GRisly
Новичок

На форуме с: Sep 2006
Cообщений: 7
Город: Piter

 
Автор оригинала: boban
ВЫход хороший, подскажи пож-та как сделать так чтобы скрипт все буквы преобразовал в прописные или в строчные,
бывает что получаемый логин начинается с заглавной буквы, а базе-сравнения логин прописан строчными буквами и на выходе разные получаются логины.



strcasecmp
($login,$login2);


-~{}~ 12.10.06 18:27:

Ситуация: Пользователь зашел с помощью NTLM а после этого вышел и зашел с помощью пароля не закрывая окна. POST запросы работать перестают. Может там можно как-нибудь убить информацию о том, что нужен NTLM? Хедер какой послать может можно?

Old Post 12.10.06 14:34 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Daemon.XP
Новичок

На форуме с: Oct 2007
Cообщений: 2
Город: Екатеринбург

 
Автор оригинала: boban
Спасиба!
ВЫход хороший, подскажи пож-та как сделать так чтобы скрипт все буквы преобразовал в прописные или в строчные,
бывает что получаемый логин начинается с заглавной буквы, а базе-сравнения логин прописан строчными буквами и на выходе разные получаются логины.

$login = strtolower($login)

-~{}~ 05.04.08 19:42:

Кто знает как заставить IE 7 посылать Authorization в headers? в ie 6 прекрасно все работает

Отредактировано Daemon.XP 05.04.08 в 14:50

Old Post 05.04.08 14:36 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
berkut
Санитар PHPClubа

На форуме с: Jul 2004
Cообщений: 1152
Город:

слушай, ты-же слово давал... так ты уйдёшь наконец или так и будешь ныть?

Old Post 05.04.08 21:13 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Frol
Санитар PHPClubа

На форуме с: Aug 2002
Cообщений: 1454
Город: Espoo, Finland

показательно выходит.

Old Post 06.04.08 00:27 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Daemon.XP
Новичок

На форуме с: Oct 2007
Cообщений: 2
Город: Екатеринбург

да уж

Old Post 06.04.08 08:49 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
GRisly
Новичок

На форуме с: Sep 2006
Cообщений: 7
Город: Piter

После обновления KB963027 от Microsoft :http://support.microsoft.com/kb/963027 слетает авторизация NTLM.
решается добавлением в реестр на машине клиента HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 key:BackConnectionHostNames
value: ИМЯ_СЕРВЕРА
добавляем строчку "IP_СЕРВЕРА ИМЯ_СЕРВЕРА" в файл %windir%\system32\drivers\etc\hosts

Old Post 28.04.09 10:32 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Время GMT. Текущее время 22:20. Подписаться на Тему | Версия для Печати
Страниц (2): « 1 [2] |  

PHP Club форумы: > Разное > PHP & W$NDOWS > Вытаскивание имени виндового пользователя
 
Оценить:
 
 
 
 

 © 1997-2010 PHPClubTeam      

Powered by vBulletin Copyright © 2000-2010 Jelsoft Enterprises Limited.