Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LDAP и PHP, Как найти текушего пользователя?  
:(
    Опции темы
Папараццы
Дата 4.1.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Как использовать функции LDAP  чтобы получить имя пользователя который залогинился в систему ( Active Directory ) 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 4.1.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



В какую систему? LDAP не поддерживает списки залогинившихся пользователей. LDAP - это только работа с самим каталогом - поиск и модификация записей.

http://en.wikipedia.org/wiki/LDAP

Это сообщение отредактировал(а) FractalizeR - 4.1.2008, 19:08


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 5.1.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



А как можно  узнать какой пользователь домена в данный момент залогинился в систему ? ( средствами PHP)


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
comtat
Дата 5.1.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Как вариант можно получить список всех пользователей в AD. 
Потом смотреть параметры, не помню точно, но помоему lastlogon и lastlogoff
И если lastlogon > lastlogoff то пользователь залогинен


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
FractalizeR
Дата 5.1.2008, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата(comtat @ 5.1.2008,  00:25)
Как вариант можно получить список всех пользователей в AD. 
Потом смотреть параметры, не помню точно, но помоему lastlogon и lastlogoff
И если lastlogon > lastlogoff то пользователь залогинен

Либо выход из его последней сессии произошел некорректно?


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
comtat
Дата 5.1.2008, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



В lastlogoff заносится данные, если выход был произведен корректно


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
Папараццы
Дата 5.1.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Нет мне нужно узнать какой пользователь смотрит сейчас сайт. Нужно чтобы пользователь заходил на сайт не вводя не какого пароля а  использовал учетную по который он и работает. Вот незнаю можно ли это средствами  PHP узнать или это всетаки ActiveX ?


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 5.1.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата(Папараццы @ 5.1.2008,  13:31)
Нет мне нужно узнать какой пользователь смотрит сейчас сайт. Нужно чтобы пользователь заходил на сайт не вводя не какого пароля а  использовал учетную по который он и работает. Вот незнаю можно ли это средствами  PHP узнать или это всетаки ActiveX ?

Ну пишите в базу данных время просмотра последней страницы на сервере и полагайте, что если он более нескольких минут не переходит на другую страницу, значит - offline. А login можно и по LDAP производить. Только логиниться придется в каждом скрипте.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 5.1.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Нет вы меня не поняли.  Допустим у нас доменная система входа в систему ( в Windows ). Допустим я зашел в виндовс потом просматриваю скрипт. Без всякого ввода и т.п. как я могу узнать под каким именем я залогинился. Тоесть в данный момент сижу. Это делается чтобы облегчить  пользовательский вход в сайт. Например, я хочу чтобы при входе на сайт автоматом уже был определен пользователь который зашел. 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 6.1.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата(Папараццы @ 5.1.2008,  23:44)
Нет вы меня не поняли.  Допустим у нас доменная система входа в систему ( в Windows ). Допустим я зашел в виндовс потом просматриваю скрипт. Без всякого ввода и т.п. как я могу узнать под каким именем я залогинился. Тоесть в данный момент сижу. Это делается чтобы облегчить  пользовательский вход в сайт. Например, я хочу чтобы при входе на сайт автоматом уже был определен пользователь который зашел.

Ну так причем тут LDAP на сервере, если вы вход в Windows произвели с клиентского компьютера? Вам каким-то образом данные о том, что вы вошли в Windows на клиентском компьютере нужно передать на сервер да еще так, чтобы убедиться, что эти данные подлинные.  Так получается? А это уже задача не для PHP.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 6.1.2008, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну да  я понял что JavaScriptom запахло :( 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 6.1.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Мне кажется, вы напрасно ставите себе такую задачу. Она явно надумана и, мне кажется, будет достаточна сложна для разрешения.

Что именно вам нужно сделать и почему вы остановились на этой идее с LDAP?


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 6.1.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну найду какой нить идентификатор.. номер и т.п. затем получу имя место нахождение и т.д. в Актив Директори через PHP


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 6.1.2008, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



А зачем вам этот ActiveDirectory вообще? 


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 7.1.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Потомучто все пользователи локальной сети заходят в свои компьютер через службу каталогов ( Active Directory ). Т.К. приложение будет работать только в локальной сети хотелось бы чтобы пользователь не водил не какие данные и сразу идентифицировался. Что то вроде этого я видел в Java Servl-летах. А такое сделать с помошью  JavaScript и PHP судя по всему не кому не известно.. 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 7.1.2008, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Ну почему же неизвестно. Достаточно просто можно сделать. В страницу легко встраивается ActiveX объект, который пишется, скажем, на Delphi. Он получает данные по авторизации из Windows и передает их на сервер.

Боюсь, что одним JavaScript в вашем случае все равно не обойтись.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 8.1.2008, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну в том то и дело что  я незнаю с чего наченать.. Что читать... 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
FractalizeR
Дата 8.1.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



В каком смысле? Вам нужно узнать, как работает ActiveDirectory и как получить от Windows данные об авторизованном пользователе. ActiveX написать будет несложно. 

Сложно будет передать эти данные на сервер так, чтобы сервер был на 100% уверен - эти данные подлинные. Этот вопрос, боюсь, вообще не имеет отношения к программированию... Мне даже кажется, что сделать это невозможно... Все данные, передаваемые с клиента, могут быть подделаны. 

Мне кажется, вы совершенно напрасно вообще затеяли эту хитрую авторизацию. Возьмите из информации о входе в ActiveDirectory только логин пользователя и заставьте его ввести свой пароль заново на сервере. Проверьте эти логин и пароль по LDAP и залогиньте пользователя у себя на сервере.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
Папараццы
Дата 8.1.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Ну в том то и дело что мне очень интересно как это реализовать.  У нас в организацие есть Windows Share Point Server каторый работает под aspx. Там есть именно то что мне нужно. 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
comtat
Дата 18.1.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



Попробуй так, для php4 работает стабильно, косячит при php5
Код

<?php // by SiMM
$headers = apache_request_headers();     // получаем все заголовки клиента
//$headers['Authorization'] = $_SERVER["HTTP_AUTHORIZATION"];
if (!isset($headers['Authorization'])) { // если заголовка авторизации нет
  header('HTTP/1.0 401 Unauthorized');   // требуем от клиента авторизации
  header('WWW-Authenticate: NTLM');      // тип требуемой авторизации - NTLM
  print_r($headers);
  exit;                                  // завершаем выполнение скрипта
}
// заголовок авторизации от клиента пришёл
if (substr($headers['Authorization'],0,5) == 'NTLM ') { // проверяем, что это NTLM-аутентификация
  $chain = base64_decode(substr($headers['Authorization'],5)); // получаем декодированное значение
  switch (ord($chain{8})) { // смотрим номер этапа процесса идентификации
    case 3: // этап 5 - приём сообщения type-3
      foreach (array('LM_resp','NT_resp','domain','user','host') as $k=>$v) {
        extract(unpack('vlength/voffset',substr($chain,$k*8+14,4)));
        $val = substr($chain,$offset,$length);
        echo "$v: ".($k<2 ? hex_dump($val) : iconv('UTF-16LE','CP1251',$val))."<br>\r\n";
      }
      exit;
    case 1: // этап 3
      if (ord($chain{13}) == 0xB2) { // проверяем признак NTLM 0xb2 по смещению 13 в сообщении type-1:
        $chain = "NTLMSSP\x00".// протокол
                 "\x02" /* номер этапа */ ."\x00\x00\x00\x00\x00\x00\x00".
                 "\x28\x00" /* общая длина сообщения */ ."\x00\x00".
                 "\x01\x82" /* признак */ ."\x00\x00".
                 "\x00\x02\x02\x02\x00\x00\x00\x00". // nonce
                 "\x00\x00\x00\x00\x00\x00\x00\x00";
        header('HTTP/1.0 401 Unauthorized');
        header('WWW-Authenticate: NTLM '.base64_encode($chain)); // отправляем сообщение type-2
        exit;
      }
  }
}

function hex_dump($str){ // вспомогательная функция, возвращает шестнадцатеричный дамп строки
  return substr(preg_replace('#.#se','sprintf("%02x ",ord("$0"))',$str),0,-1);
}
?>
Ваш интернет-обозреватель или используемый прокси-сервер несовместим с NTLM, используйте IE... Спасибо 



--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
ok_computer
Дата 18.1.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2008

Репутация: нет
Всего: 1



возможно получить системную переменную username в asp (IIS), а затем передать методом post  в php.


 
PM MAIL   Вверх
MoLeX
Дата 18.1.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



мдя сначала asp потом php. извращение)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
ok_computer
Дата 18.1.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 16.1.2008

Репутация: нет
Всего: 1



Цитата(Папараццы @ 8.1.2008,  15:42)
Ну в том то и дело что мне очень интересно как это реализовать.  У нас в организацие есть Windows Share Point Server каторый работает под aspx. Там есть именно то что мне нужно.

средствами php Windows - аутентификация  невозможна. 

уж простите за  оффтоп. но 

Код

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>

<title> Web Posting Information </title>


        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body bgColor="#cccccc" MS_POSITIONING="GridLayout">
        <form id="form1" method="post"  action="d.php">
            <div>

<input name="fio" type="hidden" value="<%= User.Identity.Name %>">
            
            </div>
            <td colspan="2"><input type="submit" value="Добавить в базу"></td>   

</form>
    

</body>
</HTML>


а потом можно передавать  fio в .aspx или .php. 

Это сообщение отредактировал(а) ok_computer - 18.1.2008, 15:15
PM MAIL   Вверх
Папараццы
Дата 19.1.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Спасибо огромное 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
Папараццы
Дата 19.1.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Интересно будет ли работать эта функция если в Апа добавить поддержку АСП ? 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.