Главная > Windows > Корпоративный чат на базе jabber (Openfire + Pandion) с доменной авторизацией

Корпоративный чат на базе 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 сервера и жмем "вход", если все правильно сделали - успешная авторизация гарантирована. Задавайте вопросы, если остались.
1 звезда2 звезды3 звезды4 звезды5 звезд (Рейтинг отсутствует)

Loading...Loading...
  1. Колясик
    17 Январь 2013 в 07:27 | #1

    А что делать, если пользователи в АД с логинами на кириллице. и при подключении влогах сервра идет сообщение:
    Caused by: java.lang.IllegalArgumentException: The input is not a valid JID node: ��� �������

  2. chum
    17 Январь 2013 в 09:31 | #2

    Я не селен в этой связке т.к. делал тоже первый раз, но возможно стоит попробовать поиграться с кодировкой сервера openfire скорее всего они различаются, попробуйте сделать одного пользователя на латинице и попробуйте зайти, если зайдет то проблема точно в кодировке

  3. Алексей
    20 Февраль 2013 в 08:12 | #3

    После пропатчивания(а именно 4 пункт) сервер вылетает обратно на начальный этап настройки(Launch Admin)....где язык и т д и тп
    openfire 3.8.0

    • chum
      20 Февраль 2013 в 08:23 | #4

      Алексей, точно не помню, но по-моему это верно. Изначально делается полностью конфигурация сервера, а потом уже настраивается через веб морду. Вы пробовали после патча все с нуля настроить?

  4. Алексей
    20 Февраль 2013 в 08:27 | #5

    а если на чистую заходить то на пандионе ошибка логина и пароля а в логе сервера такая вот штука вылазит
    2013.02.20 12:24:44 org.jivesoftware.openfire.net.StanzaHandler - Неожиданный пакет

  5. Алексей
    20 Февраль 2013 в 08:28 | #6

    да пробовал. там вроде тот файлик переписывается из пункта 4 в начальный. щас еще раз попробую для верности.

  6. chum
    20 Февраль 2013 в 08:30 | #7

    Т.е. я правильно понимаю, что после патча Вы попадаете на начальную установку с нуля? Если так, то что то делаете не правильно. Давайте попробуем разобраться, прикрепите файлы которые вы правите до патча и после патча, скорее всего ошибка именно в них.

  7. Алексей
    20 Февраль 2013 в 08:40 | #8

    Да именно так.
    < <<текст исправлен администрацией>>>

  8. chum
    20 Февраль 2013 в 08:42 | #9

    Тут файлы нельзя прикреплять, скиньте их на почту info[собачка]design-community.ru
    По возможности ответим в ближайшее время

  9. chum
    20 Февраль 2013 в 10:17 | #10

    @Алексей
    Алексей, не можем сообщение отправить, сервер говорит что у вас почта переполнена.

  10. Максим
    17 Июнь 2013 в 09:42 | #11

    Точно такая же проблема, о которой вы писали ранее: "Т.е. я правильно понимаю, что после патча Вы попадаете на начальную установку с нуля..."
    Как решить?

    • chum
      17 Июнь 2013 в 09:50 | #12

      Максим, скорее всего на каком то моменте исправленные файлы перезаписались на дефолтные, пробовали заново все пропатчить и запустить. Могу выложить патченные файлы, возможно их замена поможет?!

  11. 23 Август 2013 в 09:02 | #13

    Добрый день, сделал всё как написано, но чтото не входит автоматически. Если вводить логин и пароль вручную, то всё ок. А так ругается что пользователь не найден или пароль не верный.

    • chum
      23 Август 2013 в 09:08 | #14

      Илья, а как вы вводите логин и пароль, вместе с доменом? user@domain и тогда пропускает?

  12. 23 Август 2013 в 11:11 | #15

    Когда ручками ввожу юзер@имяЖабберсСервера и AD пароль + без использования шифрования, то пускает

  13. 2 Сентябрь 2013 в 07:05 | #16

    Люди помогите, так ничего и не получилось у меня!!!

    • chum
      2 Сентябрь 2013 в 07:29 | #17

      Не было времени ответить, у меня такое подозрение, что либо: а) не пропатчили сервер на сквозную авторизацию, либо б) автоматически авторизация лезет не на тот сервер. Но это только мои предложения. У меня была такая же загвоздка когда сервер был отдельно от пользователей (я проблему решить не смог и поставил все на одном терминальнике, благо ресурсы позволяют и тогда проблема ушла)

  14. 5 Сентябрь 2013 в 11:53 | #18

    Попробывал поставить всё на одном сервере. Всё равно не работает авто авторизация((( Версия опенфаера 3.8.2

  15. chum
    5 Сентябрь 2013 в 11:57 | #19

    @Илья
    Это уже наглось со стороны OpenFire :) патчилка точно наложилась? Без нее работать 100% не будет. Кидайте конфиг, покажу свой, там должны быть заветные строчки про NTLM аутентификацию.

  16. 10 Сентябрь 2013 в 09:39 | #20

    "патчилка точно наложилась?"
    Ну полагаю что да. Что именно выложить? Какие из файлов?

    FQDN домена: kontora.local
    NetBios-Name домена: KONTORA-DC1.kontora.local
    FQDN сервера OpenFire: jabber.contora.local
    База данных встроенная

  17. 10 Сентябрь 2013 в 11:19 | #21

    Настройки самого сервера в админке(системный настройки):
    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

    Если ничего не забыл, то вроде всё...

  18. chum
    10 Сентябрь 2013 в 11:57 | #22

    Честно говоря я уже забыл толком что там должно быть, попробуйте больше опций воткнуть в mechs. У меня вот так.

    sasl.mechs
    ANONYMOUS,PLAIN,DIGEST-MD5,CRAM-MD5,NTLM

  19. chum
    10 Сентябрь 2013 в 12:00 | #23

    И еще ldap.baseDN правильно прописан для выбора пользователей?
    Туда же еще ldap.host ?

  20. 10 Сентябрь 2013 в 12:23 | #24

    Ну да,
    ldap.baseDN OU=KONTORA,DC=kontora,DC=local
    ну и ldap.host - ip address контроллера домена

  21. 10 Сентябрь 2013 в 12:24 | #25

    И всё равно не заходит((

  22. chum
    10 Сентябрь 2013 в 12:47 | #26

    @Илья
    Вот мой конфиг, посмотрите может быть чего то не хватает или есть какие то расхождения. ++ а в логах что нибудь пишет опенфаер?

    http://backnet.ru/wp-content/uploads/2013/09/config.doc

  23. 12 Сентябрь 2013 в 11:03 | #27

    только ошибки системные показывает, сделал на примере вашего конфоги и всё равно не заработало((

  24. chum
    12 Сентябрь 2013 в 11:19 | #28

    @Илья
    Что то я даже не могу предположить, почему именно так происходит, может быть конечно из-за того, что openfire обновился до более высокой версии и патч который его патчит уже не работает. Это единственное, что приходит в голову.

  25. 12 Сентябрь 2013 в 11:28 | #29

    Я об этом тоже подумал поэтому даже версию 3,7,1 ставил. Всё одно...

  26. chum
    12 Сентябрь 2013 в 12:07 | #30

    @Илья
    У меня была еще проблема, что когда я вносил изменения (при первых попытках сделать все это) уже в рабочий сервер, то тоже ничего не получалось. Только когда сделал все с нуля и до конца - тогда получилось, может быть такая же ситуация?

  27. 12 Сентябрь 2013 в 12:41 | #31

    Я с нуля делаю. думаю может не работает что я где-то , что-то не там указываю, и как бы нет согласования в настройках.
    А ещё интересно есть разница встроенная база или внешняя, влияет ли это на настройки, тк находил мануалы немножко различающиеся в настроках.
    В общем сегодня-завтра я ещё раз попробую и если не получится то, отложу до лучших времён.

  28. AlexPAS
    13 Ноябрь 2013 в 17:27 | #32

    Подскажите, а что делать, если надо доменную авторизацию, но доменов несколько? В программе MyChat так можно, а в openfire что и как крутить, чтобы настроить это дело?

    • chum
      14 Ноябрь 2013 в 02:46 | #33

      Тут тоже так можно, сам лично не пробовал. Если внимательно почитаете инструкцию, там есть строчка где указывается домен, так вот там можно указать несколько доменов.

  29. Android
    31 Март 2015 в 13:29 | #34

    на 5 пункте пришел в тупик, так как папки Openfire\jre\lib\security вообще отсутсвует как таковая, что делать, понятия не имею, подскажите кто сможет))))

    • chum
      14 Май 2015 в 15:20 | #35

      Разобрались? У нас были проблемы с ответами на комменты.

  30. Android
    2 Апрель 2015 в 08:43 | #36

    В общем не получилось, я понять не могу почему, вот сам сервак работает, и через любой клиент можно войти под своей учеткой, но прозрачная авторизация не пашет, вообще ни как, почему, не знаю, вроде все сделал как по мануалу, но не получилось, это уже 7 мануал, и ничего не выходит, помогите пожалуйста, очень прошу)

    • chum
      14 Май 2015 в 15:20 | #37

      Разобрались? У нас были проблемы с почтой и мы не видели долгое время комментов.

  1. 28 Март 2014 в 09:48 | #1

Current month ye@r day *


3 − = один

Heads up! You are attempting to upload an invalid image. If saved, this image will not display with your comment.