Доменная аутентификация (LDAP авторизация) - как?

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Akelaakela
phpBB 1.0.0
Сообщения: 3
Стаж: 18 лет

Доменная аутентификация (LDAP авторизация) - как?

Сообщение Akelaakela »

Собсно сабж имеется ли возможность в phpbb3 сделать доменную аутентификация пользователей? (система SLES 10)
если до то как?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Доменная аутентификация - как?

Сообщение rxu »

Akelaakela
Поясните подробнее, что требуется.
Изображение
Akelaakela
phpBB 1.0.0
Сообщения: 3
Стаж: 18 лет

Re: Доменная аутентификация - как?

Сообщение Akelaakela »

требуется поднять форум для внутреннего пользования организации
при этом было бы очень хорошо если бы пользователем не надо было запоминать кучу разных паролей а если сделать на все один пароль то хранились бы эти пароли в одном месте
решение доменная аутентификация (вот тут вроде расписанно более менее http://www.osp.ru/win2000/2005/05/177754/ своими словами объяснить не берусь дабы не ввести вас в заблуждение)

ну и вот нужно прикрутить доменную аутентификацию к форуму
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Доменная аутентификация - как?

Сообщение nissin »

Думаю, что можно попробовать авторизацию через LDAP.
Akelaakela
phpBB 1.0.0
Сообщения: 3
Стаж: 18 лет

Re: Доменная аутентификация - как?

Сообщение Akelaakela »

более подробно как новичку объясните плз

зы хотелось бы нтлм2 или керберос
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 21 год 4 месяца
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза

Re: Доменная аутентификация - как?

Сообщение Поручик »

пoюзaй пoиcк пo ldap
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2229
Стаж: 18 лет 9 месяцев
Откуда: Астана
Благодарил (а): 7 раз
Поблагодарили: 344 раза

Re: Доменная аутентификация - как?

Сообщение nissin »

Если кратко:
1. Включить/установить LDAP на контроллере домена
2. Использовать в phpBB авторизацию по LDAP
Аватара пользователя
Arceny
phpBB 1.0.0
Сообщения: 4
Стаж: 17 лет 9 месяцев
Откуда: Брянск

Re: Доменная аутентификация - как?

Сообщение Arceny »

Здравствуйте!

Установил OpenLDAP (цель - доменная аутентификация форума). Так как к LDAP потом будут прикручиваться ещё дополнительные сервисы.
Но, к сожалению, не могу понять как и какую структуру каталогов мне создавать.

Что сделал: установил OpenLDAP, прописал в конфиге

Код: Выделить всё

suffix          "dc=lug,dc=local"
rootdn		"cn=admin,dc=lug,dc=local"
rootpw		{MD5}**************************
Поставил phpldap админ, туда успешно с этим cn логинится, однако создать никаких дочерних объектов не могу..

Может быть кто-то настраивал уже такую связку и может помочь?
Аватара пользователя
Arceny
phpBB 1.0.0
Сообщения: 4
Стаж: 17 лет 9 месяцев
Откуда: Брянск

Re: Доменная аутентификация - как?

Сообщение Arceny »

Умудрился создать simpleSecurityObject c полями uid и userPassword с которыми форум даже заработал
но: регистрация новых пользователей проходит но аккаунты вносятся в SQL БД а не в LDAP и смена пароля тоже не работает(пароли берутся и изменяются из того же SQL)

Куда копать?
ssh
phpBB 1.0.0
Сообщения: 2
Стаж: 17 лет 7 месяцев

Re: Доменная аутентификация - как?

Сообщение ssh »

Arceny писал(а):Умудрился создать simpleSecurityObject c полями uid и userPassword с которыми форум даже заработал
но: регистрация новых пользователей проходит но аккаунты вносятся в SQL БД а не в LDAP и смена пароля тоже не работает(пароли берутся и изменяются из того же SQL)

Куда копать?
Лучше поздно ... )) думаю в вашем случае все логично, для управления AD/LDAP записями есть более продвинутые средства нежели те, что может форум предложить, да и модуль LDAP предоставляет только механизм авторизации через LDAP-каталог, а не регистрации в нем! ;)

Если кому интересно сделали адаптировали под себя небольшую модификацию стандартной системы LDAP авторизации, для того, чтобы после авторизации на форуме пользователь фигурировал не под значением полученным по атрибуту sAMAccountName, а под каким-либо иным, например name или displayName. Думаю не вызывает сомнений, что для корпоративной среды пользователь форума Петров Иван Степанович выглядит куда адекватней чем PetrovIS.
Предполагается, что к началу модификации уже есть форум с настроенной системой LDAP-авторизации. ;)

includes/auth/auth_apache.php
БЫЛО:

Код: Выделить всё

 $search = @ldap_search(
                $ldap,
                $config['ldap_base_dn'],
                ldap_user_filter($username),
                (empty($config['ldap_email'])) ? array($config['ldap_uid']) : array($config['ldap_uid'], $config['ldap_email']),
                0,
                1
СТАЛО:

Код: Выделить всё

 $search = @ldap_search(
                $ldap,
                $config['ldap_base_dn'],
                ldap_user_filter($username),
                (empty($config['ldap_email'])) ? array($config['ldap_uid']) : array($config['ldap_uid'], $config['ldap_email'], 'name'),
                0,
                1
БЫЛО:

Код: Выделить всё

$sql ='SELECT user_id, username, user_password, user_passchg, user_email, user_type
СТАЛО:

Код: Выделить всё

$sql ='SELECT user_id, username, user_password, user_passchg, user_email, user_type, user_from
БЫЛО:

Код: Выделить всё

$ldap_user_row = array(
                'username'              => $username,
                'user_password' => phpbb_hash($password),
                'user_email'    => (!empty($config['ldap_email'])) ? $ldap_result[0][$config['ldap_email']][0] : '',
                'group_id'              => (int) $row['group_id'],
                'user_type'             => USER_NORMAL,
                'user_ip'               => $user->ip,
СТАЛО:

Код: Выделить всё

$ldap_user_row = array(
                'username'              => $username,
                'user_password' => phpbb_hash($password),
                'user_email'    => (!empty($config['ldap_email'])) ? $ldap_result[0][$config['ldap_email']][0] : '',
                'group_id'              => (int) $row['group_id'],
                'user_type'             => USER_NORMAL,
                'user_ip'               => $user->ip,
                'user_from'             => $ldap_result[0]['name'][0],
includes/functions_content.php
БЫЛО:

Код: Выделить всё

global $phpbb_root_path, $phpEx, $user, $auth;
СТАЛО:

Код: Выделить всё

global $phpbb_root_path, $phpEx, $user, $auth, $db;
БЫЛО:

Код: Выделить всё

if ($guest_username === false)
        {
              $username = ($username) ? $username : $user->lang['GUEST'];
СТАЛО:

Код: Выделить всё

if ($guest_username === false)
        {
                $sql = "SELECT * FROM `phpbb_users` WHERE `user_id` = '" . $user_id . "'";
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                $username = ($row['user_from']) ? $row['user_from'] : $username;
                $db->sql_freeresult($result);
includes/functions_user.php
БЫЛО:

Код: Выделить всё

$sql_ary = array(
                'username'              => $user_row['username'],
                'username_clean'        => $username_clean,
                'user_password'         => (isset($user_row['user_password'])) ? $user_row['user_password'] : '',
                'user_pass_convert'     => 0,
                'user_email'            => strtolower($user_row['user_email']),
                'user_email_hash'       => crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']),
                'group_id'              => $user_row['group_id'],
                'user_type'             => $user_row['user_type'],
СТАЛО:

Код: Выделить всё

$sql_ary = array(
                'username'              => $user_row['username'],
                'username_clean'        => $username_clean,
                'user_password'         => (isset($user_row['user_password'])) ? $user_row['user_password'] : '',
                'user_pass_convert'     => 0,
                'user_email'            => strtolower($user_row['user_email']),
                'user_email_hash'       => crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']),
                'group_id'              => $user_row['group_id'],
                'user_type'             => $user_row['user_type'],
                'user_from'             => $user_row['user_from'],
viewtopic.php
БЫЛО:

Код: Выделить всё

$postrow = array(
             'POST_AUTHOR_FULL'              => get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
             'POST_AUTHOR_COLOUR'    => get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
             'POST_AUTHOR'                   => get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username'
             'U_POST_AUTHOR'                 => get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']

             'RANK_TITLE'            => $user_cache[$poster_id]['rank_title'],
             'RANK_IMG'                      => $user_cache[$poster_id]['rank_image'],
             'RANK_IMG_SRC'          => $user_cache[$poster_id]['rank_image_src'],
             'POSTER_JOINED'         => $user_cache[$poster_id]['joined'],
             'POSTER_POSTS'          => $user_cache[$poster_id]['posts'],
             'POSTER_FROM'           => $user_cache[$poster_id]['from']
             'POSTER_AVATAR'         => $user_cache[$poster_id]['avatar'],
СТАЛО:

Код: Выделить всё

$postrow = array(
            'POST_AUTHOR_FULL'       => get_username_string('full', $poster_id, $user_cache[$poster_id]['from'], $row['user_colour'], $row['post_username']),
            'POST_AUTHOR_COLOUR'    => get_username_string('colour', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
            'POST_AUTHOR'                   => get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
            'U_POST_AUTHOR'                 => get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),

            'RANK_TITLE'            => $user_cache[$poster_id]['rank_title'],
            'RANK_IMG'                      => $user_cache[$poster_id]['rank_image'],
            'RANK_IMG_SRC'          => $user_cache[$poster_id]['rank_image_src'],
            'POSTER_JOINED'         => $user_cache[$poster_id]['joined'],
            'POSTER_POSTS'          => $user_cache[$poster_id]['posts'],
            'POSTER_AVATAR'         => $user_cache[$poster_id]['avatar'],
language/ru/common.php
БЫЛО:

Код: Выделить всё

        'LEGEND'                                                        => 'Легенда',
        'LOCATION'                                                      => 'Откуда',
        'LOCK_POST'                                                     => 'Заблокировать сообщение',
СТАЛО:

Код: Выделить всё

        'LEGEND'                                                        => 'Легенда',
        'LOCATION'                                                      => 'Полное имя',
        'LOCK_POST'                                                     => 'Заблокировать сообщение',
Собственно все, успехов!
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 21 год 2 месяца
Поблагодарили: 44 раза

Re: Доменная аутентификация - как?

Сообщение Rayden »

А зачем было уродовать языковую переменную локейшн зачем надо было? Почему бы не добавить новую?
phpBB2 FAQ
phpBB3 FAQ
Hitmrrr
phpBB 1.0.0
Сообщения: 9
Стаж: 17 лет 6 месяцев

Не удалось создать профиль пользователя

Сообщение Hitmrrr »

Привет камрады :)

Установил phpbb3 3.0.3, аутоинтефикация через ldap в AD (win2003serv), модов никаких нет, тема subsilver2. Все работает хорошо, но у некоторых пользователей при аутоинтефикации вылезает сообщение "Не удалось создать профиль пользователя". В журнале ошибок никаких сообщений нет.

ps. поиском пользовался, не нашел.

Добавлено спустя 59 минут 23 секунды:
google тоже ничего не дал :(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Не удалось создать профиль пользователя

Сообщение rxu »

Hitmrrr писал(а):Установил phpbb3 3.0.3
Установите 3.0.4, потом поговорим. Устаревшие версии не поддерживаются.
Изображение
Hitmrrr
phpBB 1.0.0
Сообщения: 9
Стаж: 17 лет 6 месяцев

Re: Не удалось создать профиль пользователя

Сообщение Hitmrrr »

Обновил, но проблема осталась.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Не удалось создать профиль пользователя

Сообщение rxu »

Hitmrrr писал(а):у некоторых пользователей при аутоинтефикации вылезает сообщение "Не удалось создать профиль пользователя"
Хорошо бы узнать какие-либо подробности. Возможно, ест какая-либо закономерность, например, пользователи с русскими, смешанными именами, и т.п.
Вообще-то, система показывает, что она пыталась создать новый профиль, а не просто провести аутентификацию. Т.е. получается, что ранее пользователя с заданными именем и паролем не существовало. Значит, происходит при самом первом заходе пользователя на форум?
Изображение

Вернуться в «Поддержка phpBB 3.0.х»