ВНИМАНИЕ Советую перед началом, обязательно обзавестись любым LDAP BROWSER-ом Я вооружился http://www.iit.edu/~gawojar/ldap] http://www.iit.edu/~gawojar/ldap[/url] (написан на джава) Можно другим. Не принципиально важно ПРЕАМБУЛА ЛДАП каталогов масса. И настроены они могут быть как угодно. Так что как показала практика не все так просто в привязке данного форума В моём случае это LDAP каталог на основе почтовика EXCHANGE Ещё в моей сети есть Новеловский каталог. Но в нём нет данных о почтовых адресах Поэтому было отдано предпочтение первому. Для мало просвещенных скажу что ЛДАП каталог может быть настроен так чтобы требовать авторизацию а может и пускать анонимно. В моём случае с авторизацией. Так вот сначала в LDAP BROWSERе пытаетесь подсоединится к Вашему каталогу. До тех пор пока не увидите полную ветку вашего домена со всеми пользователями и группами. (Пока этого не будет дальше идти бессмысленно.) Затем уже переносите все настройки от туда в файл "ldap\conf.php" В моём случае получилось <?php
$LOGIN_CONF = array();
$LOGIN_CONF['ldap_server'] = '10.1.1.1';
$LOGIN_CONF['ldap_port'] = '389';
$LOGIN_CONF['ldap_server_username'] = 'cn=username';
$LOGIN_CONF['ldap_server_password'] = 'pass';
$LOGIN_CONF['ldap_uid_field'] = 'rdn';
$LOGIN_CONF['ldap_base_dn'] = 'o=MyDomain;
$LOGIN_CONF['ldap_server_version'] = 3;
$LOGIN_CONF['ldap_username_suffix'] = '';
$LOGIN_CONF['ldap_user_requires_pass'] = 1;
?> Если возникнут затруднения советую поиграться с DN путем (у меня вопреки всем стандартам не пускало при указании полного base_dn) Если всё ок. Идем дальше в админку форума (Закладка «НАСТРОЙКИ») Слева в меню->Системы авторизации->Управление->LDAP Авторизация->Изменить детали Выставляем галки как ниже. Заменить HTML формой выше? (Нет) Включить метод? (Да) Разрешить создание пользователя? (Да) Так как я уже говорил мой ЛДАП каталог работает вопреки всем стандартам (Микрософт как ни как) Пришлось помудрить в самом модуле лдапа. файл "ldap\auth.php" (1)Удаляем uid_field при поиске (Уже не помню зачем) $search = @ldap_search( $this->connection_id,
$this->login_conf['ldap_base_dn'],
$this->login_conf['ldap_uid_field']. '=' . $real_username,
array( $this->login_conf['ldap_uid_field'] )меняем на $search = @ldap_search( $this->connection_id,
$this->login_conf['ldap_base_dn'],
$this->login_conf['ldap_uid_field']. '=' . $real_username
); (2) парсим и укорочиваем DN (при полном пути я даже через лдап браузер не мог законектится) $this->dn = @ldap_get_dn( $this->connection_id, $this->result );После кода добавляем $this->dn = strtok($this->dn, ","); (3)Возникала проблема что в случае успешного Первого логина пользователя учетка создавалась. Но его выкидывало на страницу регистрации и тока при последующих логинах было всё ок. Поэтому повторно загружаем данные о пользователе после его создания. if ( $this->allow_create )
{
$this->create_local_member( $username, $password );После кода добавляем $this->_load_member( $username );
if ( $this->member['id'] )
{
$this->return_code = 'SUCCESS';
} файл "loginauth\login_core.php" (1)Парсим результаты запросса к лдап каталогу. И берем для будущего пользователя всё что нам нужно. Если возникают проблемы, распечатаейте массив "$this->fields". И посмотрите что именно вы получаете в качестве параметров и получаете ли вообще. $member = array(
'name' => $username,
'members_created_remote' => 1,
'email' => $email_tmp,Меняем на $member = array(
'name' => $username,
'members_display_name' => (iconv('utf-8','windows-1251',$this->fields["cn"][0])),
'members_created_remote' => 0,
'email' => strtolower($this->fields["mail"][0]), (2)Эта строчка отправляла логиневшегося человека на дорегистрацию(Ввод имени и мыла). Мы уже всё взяли из ЛДАПА. поэтому нет смысла $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['partial_login'], 'act=reg&CODE=complete_login&mid='.$member['id'].'&key='.$timenow );Удаляем этот кусок кода ШАБЛОНЫ Когда всё работает можно и с шаблонами немного поигратся. Так как в моей организации каждый сидит за своим компом. И пользователем может быть только доменный юзер. То нет надобности в таких кнопочках как "Регистрация", "Вход", "Выход" Их можно удалить Первоночально в админке форума я запретил саму страницу "Регистрации" В файле шаблона "skin_global.php" <p class="pcen"><b>{$this->ipsclass->lang['guest_stuff']}</b> ( <a href="{$this->ipsclass->base_url}act=Login&CODE=00">{$this->ipsclass->lang['log_in']}</a> | <a href="{$this->ipsclass->base_url}act=Reg&CODE=00">{$this->ipsclass->lang['register']}</a> )Меняем на <p class="pcen"><b>{$this->ipsclass->lang['guest_stuff']}</b> ---------------------------------------------------- <p class="home"><b>{$this->ipsclass->lang['logged_in_as']} <a href="{$this->ipsclass->base_url}showuser={$this->ipsclass->member['id']}">{$this->ipsclass->member['members_display_name']}</a></b> ( <a href="{$this->ipsclass->base_url}act=Login&CODE=03&k={$this->ipsclass->md5_check}">{$this->ipsclass->lang['log_out']}</a> )</p>Меняем на <p class="home"><b>{$this->ipsclass->lang['logged_in_as']} <a href="{$this->ipsclass->base_url}showuser={$this->ipsclass->member['id']}">{$this->ipsclass->member['members_display_name']}</a></b></p> В файле шаблона "skin_login.php" Излишние предупреждения о регистрациях тока напрягают пользователей. ТАк что можно их почикать <div class="errorwrap">
<h4>{$this->ipsclass->lang['form_title_attention']}</h4>
<p>{$this->ipsclass->lang['login_text']}</p>
<p><b>{$this->ipsclass->lang['forgot_pass']} <a href="{$this->ipsclass->vars['board_url']}/index.{$this->ipsclass->vars['php_ext']}?act=Reg&CODE=10">{$this->ipsclass->lang['pass_link']}</a></b></p>
</div>Удаляем кусок кода --------------------------------------------------- Это если мы хотим всегда запоминать польльзователя <tr>
<td width="10%"><input type="checkbox" name="CookieDate" value="1" checked="checked" /></td>
<td width="90%"><b>{$this->ipsclass->lang['rememberme']}</b><br /><span class="desc">{$this->ipsclass->lang['notrecommended']}</span></td>
</tr>Заменяем на <input type="hidden" name="CookieDate" value="1" />