Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Помощь с Active Directory

Ответить
Настройки темы
[решено] Помощь с Active Directory

Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Отправить PM | Цитировать


Здравствуйте. Есть локальная сеть организации, Active Directory, есть Intranet сайт, который работает на веб-сервере Apache под управлением Win2003 . Возможно ли сделать так, чтобы при регистрации пользователь видел свой логин в Active Directory. И если возможно то как?

Отправлено: 12:53, 07-11-2008

 


Administrator


Сообщения: 25151
Благодарности: 3798

Профиль | Сайт | Отправить PM | Цитировать


Мне кажется, что это должно вам подойти: Скрипт на PHP, который отображает имя пользователя, имя домена и имя его компьютера

Код скрипта

PHP код: Выделить весь код

<?php 




/* 
L'identification par NTLM se fait en 6 etape : 

etape: | type:      | Info echange 
-------|----------------|-------------------------------------------------- 
    1   | C --> S       | GET ...                               legende : C = Client 
-------|----------------|--------------------------------------------------                     S = Serveur 
    2   | C <-- S   | 401 Unauthorized 
         |              | WWW-Authenticate: NTLM 
-------|----------------|-------------------------------------------------- 
    3   | C --> S       | GET ... 
         |              | Authorization: NTLM <base64-encoded type-1-message> 
-------|----------------|-------------------------------------------------- 
    4   | C <-- S   | 401 Unauthorized 
         |              | WWW-Authenticate: NTLM <base64-encoded type-2-message> 
-------|----------------|-------------------------------------------------- 
    5   | C --> S       | GET ... 
         |              | Authorization: NTLM <base64-encoded type-3-message> 
-------|----------------|--------------------------------------------------  
    6   | C <-- S        | 200 Ok 
-------|----------------|-------------------------------------------------- 

*/ 



$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"
         
        } 

    } 



?>

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 12:59, 07-11-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Отправить PM | Цитировать


Низкий вам поклон.

Отправлено: 13:37, 07-11-2008 | #3



Administrator


Сообщения: 25151
Благодарности: 3798

Профиль | Сайт | Отправить PM | Цитировать


на здоровье

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 19:03, 07-11-2008 | #4


Deadooshka


Сообщения: 2499
Благодарности: 682

Профиль | Отправить PM | Цитировать


надо вместо "полезное сообщение" сделать "поклониться автору"

Отправлено: 11:32, 09-11-2008 | #5


Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


Цитата Sham:
надо вместо "полезное сообщение" сделать "поклониться автору »
мне кажется нормально, это отражает участие авторов в форуме, конечно качество благодарностей не берется в расчет, те несоображающие например я, не могут всю суть например авторского кода осознать и по настоящему оценить его эфективность, понимающий програмист конечно может сказать код безполезный не стоящий поклона и привести большое количество обоснований и т.д. но это уровень куда повыше и понимаю не для этого форума или вам нужен тут строгий контроль сообщений и тогда да тут смогут рождаться супер коды и т.п. путям консолидации усилий и знаний многих професиональных програмистов, но тогда этот форум станет не тем форумом, которым он является щас и нам придется подберать что то опять какой то форум устроенный, как и этот, поэтому огромная благодарность всем кто поддерживает этот форум, хорошо что он такой как щас есть, но благодарности ставятся за оказанную увслугу и за помощь и не за то, что тут совершаются открытия, которые являются открытиями века и предоставляются совершенные коды'

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Отправлено: 01:06, 10-11-2008 | #6



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Помощь с Active Directory

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Не запускается active directory Zergling Microsoft Windows NT/2000/2003 5 04-08-2008 19:42
[решено] Active Directory Win2000 KalaSh Microsoft Windows NT/2000/2003 6 03-07-2008 18:57
[решено] active directory, команда dsmod ... ошибка directory object not found big_foot Microsoft Windows NT/2000/2003 2 18-06-2008 17:48
[решено] Win2k3EE Active Directory + Firewall gwynbleidd Microsoft Windows NT/2000/2003 6 03-07-2006 15:18




 
Переход