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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LDAP и PHP, Как найти текушего пользователя?  
:(
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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