Корпоративный чат на базе jabber (Openfire + Pandion) с доменной авторизацией
Установка opensource корпоративного чата с авторизацией через Active Directory.
Задача была следующей: Развернуть корпоративный чат в локальной сети предприятия максимально похожего на icq с автоматической авторизацией через Active Directory. Погуглив и полазив по просторам интернета наткнулся на очень интересный jabber сервер под названием Openfire, скачать эту бесплатную вещицу можно на их официальном сайте http://www.igniterealtime.org/projects/openfire/ (на момент написания статьи, версия была 3.7.1. Там же кроме сервера есть их собственные клиенты (как веб, так и обычный). В сети используется терминальный сервер на котором работают клиенты, и несколько других серверов входящих в домен, пользователей порядка ~70 - 100 человек (чтобы было понятно про нагрузку). Тестовая установка и тестирование делалось непосредственно на терминальном сервере Windows 2008 R2. И так приступим... ЧАСТЬ 1 (установка) Скачиваем версию для "Ленивых", где только нужно клацать мышкой и заполнять поля ( openfire_3_7_1.exe Includes Java JRE (recommended) ). Первым делом будет окошко с выбором языка, в нем нет русского (но позже будет (немножко кривой, видимо переводили промтом), тут язык выбирается только для установки. Далее, жмем next, принимаем соглашение, указываем директорию установки и ждем установки. После установки, ставим галочку Run..., жмем "Ок" и видим окно запущенного сервиса. В появившимся окне, клацаем по кнопке "Launch Admin" которая запускает браузер с дальнейшей установкой и настройки jabber сервера. На первой странице - выбираем язык, на котором в дальнейшем будет наша админ панелька. (по правде говоря русский язык читается смешно, на английском даже лучше понятно, но т.к. мы русские - выбираем русский 🙂 ) Ждем "Continue" и переходим к следующей странице настроек на которой необходимо заполнить название домена (по умолчанию это имя пк) на котором будет крутиться сервер и порты (оставляем без изменения). Жмем кнопку "Продолжить". Далее нам предлагают выбрать базу данных, можно выбрать mysql и поиграться с ней, но чтобы не замарачиваться, выбираем встроенную HSQLDB. На следующей странице предлагается выбрать способ работы с пользователя, т.к. нас интересует авторизация через домен, выбираем LDAP. Далее идет одна из главных страниц настроек - подключение к AD. "Тип сервера" - указываем Active Directory "Хост" - имя домена, в случае примера это "office.company.local" "Порт" - остается по умолчанию, это порт который слушает AD "База DN" - Base Domain Name - в моем примере это папка users в домене office.company.local (cn=name,dc=office,dc=company,dc=local) Настройки можно проверить, нажав на забавно переведенную кнопку "Настройка теста". Если все прошло хорошо, увидим соответствующее окно если же нет, смотрим, что и где указали не верно. После жмем такую же веселую кнопку "Сохранять & Остаться". В следующем окне необходимо указать по каким параметрам мы будем отбирать пользователей. Пока я рылся в интернете один из блогеров (ссылку к сожалению не помню), предложил вместо того, чтобы выбирать всех пользователей, отсеивать тех, которые отключены. Для этого жмем ссылку "Расширенная настройка" и вместо (objectClass=organizationalPerson) вписываем вот такую строчку (objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)) Проходим дальше и в следующем окне оставляем все как есть, жмем "ок....". После, в окне предлагают добавить админа для управления сервером, вводим имя пользователя из AD под которым будем осуществлять управление. Жмем "Продолжить". Вуаля, все готово и нам предлагают пройти в админ панель. ЧАСТЬ 2 (настройка) Теперь для того, чтобы пользователи могли "позрачно" (без ввода логин пароля) авторизовываться в чате, нужно пропатчить сервер, сторонним патчем который позволяет реализовать NTLM. Сам патч качаем вот отсюда http://norman.rasmussen.co.za/dl/sasl-sspi/. На момент написания статьи это был файл openfire-sasl-sspi.v7.2.zip Распаковываем архив и читаем инструкцию по установке. Если не хочется читать инструкцию, коротко опишу что нужно сделать: 1. Скопировать файл SaslSspi.dll из папки install/bin/ и положить его в папку openfire/bin/ 2. Скопировать файл sasl-sspi.jar из папки install/lib/ и положить его в папку openfire/lib/ 3. Скопировать файл saslmechanisms.jar из папки install/plugins/ и положить его в папку openfire/plugins/ 4. Скопировать содержимое файла openfire-patch.xml из папки install/conf/ в файл openfire.xml в папке openfire/conf/ (обратите внимание, что скопировав содержимое его нужно подправить), а именно: <realm>MYNTDOMAIN</realm> <!------ тут указываем имя нашего домена <!-- or if you have more than one domain: --> <!----- а вот тут, если доменов несколько, то указываем несколько и стираем первую строчку, либо если домен один то стираем то что идет ниже (т.е. выбираем или то, или то) <approvedRealms>MYNTDOMAIN1,MYNTDOMAIN2</approvedRealms> 5. Копируем содержимое файла java.security.patch из папки install/jre/lib/security в файл java.security который находится в папке Openfire\jre\lib\security\ а именно, находим вот этот блок # # List of providers and their preference orders (see above): # security.provider.1=sun.security.provider.Sun security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=com.sun.net.ssl.internal.ssl.Provider security.provider.4=com.sun.crypto.provider.SunJCE security.provider.5=sun.security.jgss.SunProvider security.provider.6=com.sun.security.sasl.Provider security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.8=sun.security.smartcardio.SunPCSC security.provider.9=sun.security.mscapi.SunMSCAPI и после него вставляем вот эту строчку security.provider.10=net.za.darkskies.security.sasl.SSPIProvider После этого перезагружаем сервер и заходим в админ панель по адресу <ip>:9090. Тут все просто и понятно. Нужные галочки ставим, не нужные снимаем. После этого, устанавливаем клиент Padion и выставляем аутентификацию через NTLM (доменную), вводим ip сервера и жмем "вход", если все правильно сделали - успешная авторизация гарантирована. Задавайте вопросы, если остались.
Categories: Windows 2008, active directory, ntlm, openfire, opensource, pandion, windows, корпоративный, сервер, чат
А что делать, если пользователи в АД с логинами на кириллице. и при подключении влогах сервра идет сообщение:
Caused by: java.lang.IllegalArgumentException: The input is not a valid JID node: ��� �������
Я не селен в этой связке т.к. делал тоже первый раз, но возможно стоит попробовать поиграться с кодировкой сервера openfire скорее всего они различаются, попробуйте сделать одного пользователя на латинице и попробуйте зайти, если зайдет то проблема точно в кодировке
После пропатчивания(а именно 4 пункт) сервер вылетает обратно на начальный этап настройки(Launch Admin)….где язык и т д и тп
openfire 3.8.0
Алексей, точно не помню, но по-моему это верно. Изначально делается полностью конфигурация сервера, а потом уже настраивается через веб морду. Вы пробовали после патча все с нуля настроить?
а если на чистую заходить то на пандионе ошибка логина и пароля а в логе сервера такая вот штука вылазит
2013.02.20 12:24:44 org.jivesoftware.openfire.net.StanzaHandler — Неожиданный пакет
да пробовал. там вроде тот файлик переписывается из пункта 4 в начальный. щас еще раз попробую для верности.
Т.е. я правильно понимаю, что после патча Вы попадаете на начальную установку с нуля? Если так, то что то делаете не правильно. Давайте попробуем разобраться, прикрепите файлы которые вы правите до патча и после патча, скорее всего ошибка именно в них.
Да именно так.
< <<текст исправлен администрацией>>>
Тут файлы нельзя прикреплять, скиньте их на почту info[собачка]design-community.ru
По возможности ответим в ближайшее время
@Алексей
Алексей, не можем сообщение отправить, сервер говорит что у вас почта переполнена.
Точно такая же проблема, о которой вы писали ранее: «Т.е. я правильно понимаю, что после патча Вы попадаете на начальную установку с нуля…»
Как решить?
Максим, скорее всего на каком то моменте исправленные файлы перезаписались на дефолтные, пробовали заново все пропатчить и запустить. Могу выложить патченные файлы, возможно их замена поможет?!
Добрый день, сделал всё как написано, но чтото не входит автоматически. Если вводить логин и пароль вручную, то всё ок. А так ругается что пользователь не найден или пароль не верный.
Илья, а как вы вводите логин и пароль, вместе с доменом? user@domain и тогда пропускает?
Когда ручками ввожу юзер@имяЖабберсСервера и AD пароль + без использования шифрования, то пускает
Люди помогите, так ничего и не получилось у меня!!!
Не было времени ответить, у меня такое подозрение, что либо: а) не пропатчили сервер на сквозную авторизацию, либо б) автоматически авторизация лезет не на тот сервер. Но это только мои предложения. У меня была такая же загвоздка когда сервер был отдельно от пользователей (я проблему решить не смог и поставил все на одном терминальнике, благо ресурсы позволяют и тогда проблема ушла)
Попробывал поставить всё на одном сервере. Всё равно не работает авто авторизация((( Версия опенфаера 3.8.2
@Илья
Это уже наглось со стороны OpenFire 🙂 патчилка точно наложилась? Без нее работать 100% не будет. Кидайте конфиг, покажу свой, там должны быть заветные строчки про NTLM аутентификацию.
«патчилка точно наложилась?»
Ну полагаю что да. Что именно выложить? Какие из файлов?
FQDN домена: kontora.local
NetBios-Name домена: KONTORA-DC1.kontora.local
FQDN сервера OpenFire: jabber.contora.local
База данных встроенная
Настройки самого сервера в админке(системный настройки):
sasl.mechs ANONYMOUS,PLAIN,NTLM
sasl.realm KONTORA-DC1.kontora.local
xmpp.domain jabber.kontora.local
============================================
Настройки openfire.xml (заменяемая часть):
ANONYMOUS,PLAIN,NTLM
KONTORA-DC1.kontora.local
==================================================
в java.security добавлена строчка 10я
security.provider.10=net.za.darkskies.security.sasl.SSPIProvider
Если ничего не забыл, то вроде всё…
Честно говоря я уже забыл толком что там должно быть, попробуйте больше опций воткнуть в mechs. У меня вот так.
sasl.mechs
ANONYMOUS,PLAIN,DIGEST-MD5,CRAM-MD5,NTLM
И еще ldap.baseDN правильно прописан для выбора пользователей?
Туда же еще ldap.host ?
Ну да,
ldap.baseDN OU=KONTORA,DC=kontora,DC=local
ну и ldap.host — ip address контроллера домена
И всё равно не заходит((
@Илья
Вот мой конфиг, посмотрите может быть чего то не хватает или есть какие то расхождения. ++ а в логах что нибудь пишет опенфаер?
http://backnet.ru/wp-content/uploads/2013/09/config.doc
только ошибки системные показывает, сделал на примере вашего конфоги и всё равно не заработало((
@Илья
Что то я даже не могу предположить, почему именно так происходит, может быть конечно из-за того, что openfire обновился до более высокой версии и патч который его патчит уже не работает. Это единственное, что приходит в голову.
Я об этом тоже подумал поэтому даже версию 3,7,1 ставил. Всё одно…
@Илья
У меня была еще проблема, что когда я вносил изменения (при первых попытках сделать все это) уже в рабочий сервер, то тоже ничего не получалось. Только когда сделал все с нуля и до конца — тогда получилось, может быть такая же ситуация?
Я с нуля делаю. думаю может не работает что я где-то , что-то не там указываю, и как бы нет согласования в настройках.
А ещё интересно есть разница встроенная база или внешняя, влияет ли это на настройки, тк находил мануалы немножко различающиеся в настроках.
В общем сегодня-завтра я ещё раз попробую и если не получится то, отложу до лучших времён.
Подскажите, а что делать, если надо доменную авторизацию, но доменов несколько? В программе MyChat так можно, а в openfire что и как крутить, чтобы настроить это дело?
Тут тоже так можно, сам лично не пробовал. Если внимательно почитаете инструкцию, там есть строчка где указывается домен, так вот там можно указать несколько доменов.
на 5 пункте пришел в тупик, так как папки Openfire\jre\lib\security вообще отсутсвует как таковая, что делать, понятия не имею, подскажите кто сможет))))
Разобрались? У нас были проблемы с ответами на комменты.
В общем не получилось, я понять не могу почему, вот сам сервак работает, и через любой клиент можно войти под своей учеткой, но прозрачная авторизация не пашет, вообще ни как, почему, не знаю, вроде все сделал как по мануалу, но не получилось, это уже 7 мануал, и ничего не выходит, помогите пожалуйста, очень прошу)
Разобрались? У нас были проблемы с почтой и мы не видели долгое время комментов.
У меня нет папки Openfire\jre\lib\security\
Должно быть, 100% в windows версии.
как сбросить парол admin OpenFire
Если пользователь доменный, то можно через домен. Если пользователь локальный, то попробуйте прочитать этот пост discourse.igniterealtime.org/t/resetting-admin-passwords/60550/12