Локальный чат с NTLM авторизацией (Windows Server 2008 R2 + Openfire + Pandion)
1. Подготовка.
В оснастке Active Directory – пользователи и компьютеры создадим подразделение (к примеру, название вашей компании, я же его назвал Company), а уже в этом подразделении создадим подразделение, в котором будут храниться пользователи (можно использовать и существующую вкладку Users, но мне кажется не очень удобным, поскольку там содержится куча групп, которые нам в чате не нужны), назовем его Users.
Необходимо в созданном подразделении Users создать пользователя в качестве администратора Openfire. Я создал пользователя с именем openfire, ни в какие группы его добавлять не нужно, этот пользователь создается только в качестве администратора Openfire, вход в систему под ним осуществляться не будет. Только поставьте галочку в пункте “Срок действия пароля не ограничен”. А так же сразу создадим группу в которую будут входить все пользователи, я назвал ее All.

2. Установка Openfire.
Openfire вы можете скачать с официального сайта или же отсюда (как раз на этой версии я проводил настройку).
Установите Openfire, снимите галочку запуска его после установки. Откройте папку с установленным Openfire, перейдите в папку bin и откройте здесь командную строку. Установим службу Openfire командой openfire-service.exe -install

Откройте Службы и убедитесь, что служба Openfire запущена.
Откройте браузер и перейдите по адресу 127.0.0.1:9090.
1. Выбор языка.
Я бы вам советовал оставить английский язык, т.к. русский язык переведен машинно.
2. Настройки сервера.
В поле Domain у вас сразу должно быть указано имя сервера, но я бы рекомендовал указать FQDN сервера, в моем случае это server.company.lan. Номера портов оставляем как есть.

3. Настройка базы данных.
Здесь необходимо выбрать встроенную базу данных (Embedded Database).

4. Настройки профиля.
Здесь необходимо выбрать LDAP.

5. Настройки профиля. Шаг 1 - Настройка подключения.
В поле Тип сервера (Server Type) выбрать Active Directory.
В поле Хост (Host) указать FQDN вашего сервера, в моем случае этоserver.company.lan.
Номер порта оставляем неизменным.
В поле База DN (Base DN) необходимо указать путь, где у нас в AD хранятся пользователи. У меня пользователи хранятся в подразделении Users, которая, находится в подразделении Company, а мой домен company.lan, поэтому моя запись Base DN имеет следующий вид:OU=Users,OU=Company,DC=company,DC=lan.
В поле Администратор DN (Administrator DN) необходимо указать администратора контроллера домена, в моем случае это встроенная учетная запись Администратор, а имя моего домена company.lan, поэтому запись имеет вид: Администратор@company.lan.
В поле Пароль (Password) необходимо ввести пароль администратора контроллера домена.

Теперь необходимо выбрать Тест настроек (Test Settings) и если тест успешен, выбрать Сохранить и продолжить (Save & Continue). Если же тест был не успешен, проверьте правильность заполнения всех полей.
6. Настройки профиля. Шаг 2 – Отображение пользователей.
Здесь ничего изменять не нужно. Выберете Тест настроек (Test Settings) и если тест успешен, выбрать Сохранить и продолжить (Save & Continue).
7. Настройки профиля. Шаг 3 – Отображение групп.
Здесь ничего изменять не нужно. Выберете Тест настроек (Test Settings) и если тест успешен, выбрать Сохранить и продолжить (Save & Continue).
8. Аккаунт администратора.
Здесь необходимо указать имя пользователя, которого мы создали в качестве администратора Openfire, в моем случае это пользователь openfire. Необходимо, чтобы эта учетная запись находилась в подразделении, которое мы описывали в базе DN (Base DN), иначе Openfire ее попросту не увидит. Добавляем пользователя и кликаем продолжить.

На этом установка завершена. Теперь вам предложат войти в консоль администратора, используя логин и пароль администратора Openfire.
3. Настройка NTLM.
В папке с установленным Openfire перейдите по пути \jre\lib\security и откройте с помощью блокнота (я бы советовал использовать Notepad++, т.к. стандартный блокнот не переносит все нормально по строкам, и вам будет сложно с помощью его редактировать данный файл) файл java.security. И после строк:
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI
добавьте строку:
security.provider.10=net.za.darkskies.security.sasl.SSPIProvider
и сохраните изменения в файле.
Далее необходимо поставить NTLM патч, для этого просто скопируйте все три файла архива по такому же пути в папку с установленным Openfire.
Зайдем в веб-консоль Openfire и перейдем Server -> Server Manager -> System Properties. Спустимся в самый низ, до пункта Add new property и добавим следующие настройки. Там две строчки, первая Property Name (имя правила) и вторая Property Value (значение). Добавьте четыре настройки, согласно приведенной таблице.
Property Name
|
Property Value
|
sasl.approved.realms | Поле значений оставьте пустым |
sasl.mechs | ANONYMOUS,PLAIN,NTLM |
sasl.realm | NetBIOS имя домена, у меня имя домена company.lan, соответственно NetBIOS имя домена будет COMPANY |
xmpp.fqdn | FQDN имя сервера, на котором установлен Openfire, в моем случае этоserver.company.lan |
4. Отображение списка пользователей.
В веб-консоли Openfire перейдем Users/Groups -> Groups -> Group Summary. И кликнем на созданную группу, у меня это группа All. Поставим галочку напротивShare group with additional users и выберем All users, в строке Enter contact list group name необходимо указать имя группы с которым она будет отображаться в Pandion, я назвал ее Company (в этой группе будут содержаться все сотрудники, в дальнейшем вы можете создать группы с именами отделов и включить в них только сотрудников данного отдела), сохраним изменения.
После всех настроек Openfire – перезапустите его службу.
5. Настройка Pandion.
Хотелось бы, чтобы у любого пользователя домена при входе в систему запускался Pandion, не спрашивая ни каких настроек, логинов, паролей. Для этого установим Pandion прямо на нашем сервере. После установки перейдем в папку, куда установлен Pandion и в папке settings с помощью блокнота откроем файл brand. Найдем строку <sspiserver></sspiserver> и в ней укажем FQDN своего сервера, в моем случае это выглядит так: <sspiserver>server.company.lan</sspiserver>. Спускаемся в самый низ файла, в строке <serveraddress></serveraddress> так же указываем FQDN вашего сервера, у меня<serveraddress>server.company.lan</serveraddress>. В строке <serverport></serverport> необходимо указать номер порта, номер необходимого нам порта 5222, тогда строка будет иметь следующий вид <serverport>5222</serverport>. Строку <encryption>optional</encryption> оставить без изменения, а в строке<authentication>normal</authentication> слово normal на ntlm. А так же отключим обновление и окно приветствия, для этого найдем строки:
<installupdates>yes</installupdates>
<welcomescreen>yes</welcomescreen>
и параметр yes заменим на no.
Сохраните изменение в файле.
6. Разлитие Pandion на локальные машины.
Скопируем всю папку программы Pandion в общую папку на сервере. У меня есть папка SOFT доступна группе пользователей Пользователи домена только для чтения, вот туда я ее и скопирую. Осталось разливать Pandion при первом входе пользователя в систему, для этого напишем небольшой бат файл. Содержимое моего бат файла:
if not exist %homepath%\AppData\Pandion\Application\pandion.exe xcopy \\server\soft\Pandion %homepath%\AppData\Pandion\ /S /E
start %homepath%\AppData\Pandion\Application\pandion.exe
Для хранения пандиона на клиентских машинах я выбрал папку AppData в их домашнем каталоге, т.к. она по умолчанию является скрытой и простой пользователь там лазить не будет. Первая строка моего бат файла проверяет наличие файла pandion.exe в каталоге %homepath%\AppData\Pandion\Application\, если такого не существует, то с сервера копируется папка с пандионом по указанному раннее пути. \\server\soft\Pandion - сетевой путь к папке пандиона на моем сервере, замените его на свой. Вторая строка запускает сам пандион. Сохраним свой бат файл.
Откроем Пуск -> Администрирование -> Управление групповой политикой, далее развернем вкладку Лес, Домены и развернем свой домен. На вкладкеDefault Domain Policy кликнем правой кнопкой мыши Изменить. Далее перейдем Конфигурация пользователя -> Политики -> Конфигурации Windows -> Сценарии (вход/выход из системы) откроем Вход в систему. Далее Сценарии -> Добавить укажем имя сценария (я указал Pandion), кликнем обзор, и в открывшиеся окно перетянем наш бат файл, выберем его, и кликнем Открыть.
7. Проверка.
Собственно проверка, пришел на работу новый сотрудник, по имени Вася Пупкин, ему создам учетную запись в домене. В оснастке Active Directory – пользователи и компьютеры перейдем в наше созданное подразделение Company -> Users и создадим пользователя и зададим ему пароль. А так же добавим нашу созданную группу, у меня это Company.

Нашему пользователю выделили компьютер, он вводит свой логин и пароль для входа в систему.

И ему копируется Pandion и автоматически авторизуется. Вася может общаться с коллегами =).

Если у вас Pandion не может авторизоваться, и вы уверены, что выполнили все правильно, проверьте брандмауэр на вашем сервере.
Артем, добрый день.
ОтветитьУдалитьВозможно Вы уже отказались от использования Пандиона, но на всякий случай попробую спросить...
Возможно ли сделать, чтобы после автоматической авторизации пользователю присваивалось его имя? Сейчас это выглядит так: в ростере видный ФИО всех пользователей, и при разговоре с любым из пользователей видно его ФИО. Но своё имя всегда показывается в виде логина. А в конференции у всех пользователей вместо ФИО отображаются логины.
Посмотрев конфиг стало понятно что за эти значения отвечают nick и conferencenick.
Возможно ли в эти значения передавать ФИО (как это сделано в ростере)?
Добрый день. Заметка еще со студенческих годов, было поставлено такая задача на занятии, с тех пор в вин системами со стороны администрирования сталкивался не так тесно. Если в ручную поправить эти поля, то все отображается как нужно? Если попробовать такой костыль (назовем это автоматизацией=)), добавить в батник перед стартом пандиона некую правку конфигов, с вин консолью знаком слабо, но может на мысль натолкну. Взять и сделать типа такого, узнать полное имя записи "net user %UserName%", распарсить вывод до нужного вида и результат вставить в нужные опции и запустить пандион.
ОтветитьУдалитьСпасибо за ответ.
ОтветитьУдалитьХотелось бы все таки чтоб сам Пандион это делал.
В любом случае спасибо за наводку по батнику, будет запасным планом =)
Автору большущий респект! Очень удобный и автономный корпоративный чат. Спасибо за статью!
ОтветитьУдалитьЕсли конечно еще актуально не как не могу группы создать есть
ОтветитьУдалитьcn=company в ней отделы бухгалтерия, производство и т.д., а в ней уже пользователи, так как настроить чтобы пользователи группировались, у меня получается только либо все пользователи компании либо пустые группы, я понимаю что проблема в запросе, но куда копать уже не понимаю.
Для того что бы в клиентах автоматически появились группы с пользователями, необходимо на веб морде OPENFIRE зайти в раздел Users/Groups, в ветке Group Summary найти нужную группу,которая подтягивается из LDAP (в LDAP-е соответственно она должна быть создана с пользователями внутри). Далее в настройках группы в поле Enter cantact list group name Указать имя, в разделе Share group with: выставить All users и нажать Save contact list settings.
УдалитьДобрый день!! Подскажите, в момент установки подтянулись все группы и пользователи из LDAP, через некоторое время добавилась новая группа и пользователь, как сделать что бы юзер и группа появились в Open Fire?
ОтветитьУдалитьНет папки Openfire\jre\lib\security\
ОтветитьУдалить