Openfire spark sso windows

Записки котошредера

Админ должен быть ленив. Делаем упор на автоматизацию.

Openfire — Часть 2. Openfire+Red5+Spark+SSO на Windows

Оф.сайт Опенфаера, Спарка и плагинов к опенфаеру и спарку — http://www.igniterealtime.org/

Установка опенфаера, прикрученного к АД в первой части цикла статей про Openfire.

Сервер — Win2k3 SP2R2 rus, с последними обновлениями.
Клиенты — WinXP SP3, с последними обновлениями, IE6
Режим работы AD — смешанный.
Openfire 3.6.3
Spark 2.5.8
Red5-plugin for Openfire — 0.1.04
Red5-plugin for Spark — 0.0.6

И так, у нас в организации возникла необходимость внедрения видеоконференций. После продолжительного поиска опенсорс решений, я пришел к выводу, что не за чем изобретать велосипед, и все можно реализовать через джаббер-сервер Openfire c плагином Red5 .
Ранее, у нас использовался клиент Pandion, но я не смог найти ред5-плагина к нему, хотя, в природе он вроде бы существует.

Т.к. у нас присутствует Актив Директори, то и джаббер-аккаунты привязаны к нему, ну и чтобы не заставлять бедных юзеров вводить пароли, нужна поддержка SSO

В общем, приступим. Первым делом понадобится пакет Support Tools, для вашей версии серверной винды, где, собственно и будет развернут опенфаер-сервер. Он есть на диске с виндой, то ли на первом, то ли на втором. Вроде на первом.

Настройка серера Windows для поддержки Single Sign-On в Openfire

1. Заходим на контроллер домена (далее КД) админом.

2. Создаем учетку в Active Directory (далее AD, АД), по умолчанию она должна быть в группе «Пользователи домена». Проверяем это. Кстати, у нас уже должа быть учетная запись, через которую Openfire (далее ОФ) коннектится к АД. Ее можно посмотреть в веб-админке ОФ, в разделе System Properties. Учетка должна быть с неограниченным сроком пароля и запретом его изменения.
В моем примере, учетка будет называться «xmpp-openfire» (осталось от англоязычного ХауТу. Если интересно, у меня она просто «of»).

3.Идем в «програм файлс\саппорт тулс». Убеждаемся в наличии файла setspn.exe.

4. Теперь создаем «Kerberos XMPP SPN» (хрен иво знает че это, влом вкуривать %) ) для нашей опенфаеровской учетки (эта команда и последующие пишется в одну строку)

setspn -A xmpp/servername.domain.com@REALM.COM xmpp-openfire

servername.domain.com — полное доменное имя вашего КД (full quality doman name, FQDN), а после собаки, имя домена в верхнем регистре (это важно).
xmpp-openfire — имя вашей учетной записи для ОФ.

Результатом выполнения будет что-то типа

Registering ServicePrincipalNames for CN=xmpp-openfire,OU=OU_Users,DC=realm,DC=сщь
xmpp/servername.domain.com@REALM.COM
Updated object

5. Ищем в суппорт тулс файл ktpass.exe. Находим и радуемся. теперь мы должны привязать «Kerberos XMPP SPN» к нашей оф-учетке.

ktpass -princ xmpp/servername.domain.com@REALM.COM -mapuser xmpp-openfire@domain.com -pass **** -ptype KRB5_NT_PRINCIPAL

Тут о же самое.
servername.domain.com — полное доменное имя вашего КД (full quality doman name, FQDN), а после собаки, имя домена в верхнем регистре (это важно).
xmpp-openfire — имя вашей учетной записи для ОФ.
xmpp-openfire@domain.com — наша учетка@имя домена в нижнем регистре. Звездочтками отмечен пароль для этой учетки, соответственно, замените на свой.

Читайте также:  Bootcamp пропал диск с mac os

на выходе получим что-то типа

Targeting domain controller: servername.domain.com
Successfully mapped xmpp/servername.domain.com to xmpp-openfire.
Key created.
Account of has been set for DES-only encryption.

6. Далее, мы должны создать keytab файл. он создается с помощью тулзы ktab, лежащей в каталоге Java/JRE. Я нашел этот каталог в папке опенфаер\jre\bin. В английском хауту написано, что версия java должна быть не ниже 1.6. В комплекте с ОФ 3.6.3 идет нужная версия. И так, выполняем

ktab -k xmpp.keytab -a xmpp/servername.domain.com@REALM.COM

оно попросит нас пароль для этой учетки, смело даем че нас просят.

Password for xmpp/servername.domain.com@REALM.COM:****
Done!
Service key for xmpp/servername.domain.com@REALM.COM is saved in xmpp.keytab

оно создаст в этой же директории файл xmpp.keytab. Пущай там и лежит.

7. Идем снова в суппорт тулз, ищем и находим файло ktpass.exe. Выполняем

ktpass -princ xmpp/servername.domain.com@REALM.COM -mapuser xmpp-openfire@domain.com -pass **** -ptype KRB5_NT_PRINCIPAL -out xmpp.keytab

Заменяем, что нужно, как в пункте 5. На выходе имеем типа

Targeting domain controller: servername.domain.com
Failed to set property «servicePrincipalName» to «xmpp/servername.domain.com» on Dn
«CN=of,OU=OU_Users,DC=realm,DC=com»: 0x14.
WARNING: Unable to set SPN mapping data.
If of already has an SPN mapping installed for xmpp/servername.domain.com, this i
s no cause for concern.
Key created.
Output keytab to xmpp.keytab:
Keytab version: 0x502
keysize 56 xmpp/servername.domain.com@REALM.COM ptype 1 (KRB5_NT_PRINCIPAL) vno 4 etype
0x3 (DES-CBC-MD5) keylength 8 (0xf185cb081f830e2f)
Account of has been set for DES-only encryption.

Как видите, оно заругалась на что-то, ну, и ф иг с ним. файлег создало и ладушки.

8. Копируем xmpp.keytab в каталог опенфаер\resourses. Я брал кейтаб изкаталога Java, а не саппорт тулс, несмотря на то, что второй мы создавали позже. За то первый весит больше =))

Настройка Openfire для SSO + Kerberos используя GSSAPI

1. Идем в каталог опенфаер\conf и создаем там файл gss.conf со следующим содержанием

com.sun.security.jgss.accept <
com.sun.security.auth.module.Krb5LoginModule
required
storeKey=true
keyTab=»C:/Program Files/Openfire/resources/xmpp.keytab»
doNotPrompt=true
useKeyTab=true
realm=»REALM.COM»
principal=»xmpp/servername.domain.com@REALM.COM»
debug=true;
>;

realm=»REALM.COM»
и
principal=»xmpp/servername.domain.com@REALM.COM»
меняете под себя.

2. На серваке идем в катлог винды и создаем там файл krb5.ini. вот егосодержание.

[libdefaults]
default_realm = REALM.COM
default_tkt_enctypes = rc4-hmac des3-cbc-sha1 des-cbc-crc des-cbc-md5
default_tgs_enctypes = rc4-hmac des3-cbc-sha1 des-cbc-crc des-cbc-md5
permitted_enctypes = rc4-hmac des3-cbc-sha1 des-cbc-crc des-cbc-md5

[realms]
REALM.COM = <
kdc = kdc1.domain.com
admin_server = kdc1.domain.com
default_domain = domain.com
>

[domain_realms]
domain.com = REALM.COM
.domain.com = REALM.COM

REALM.COM везде меняем на имя домена в верхнем регистре. В секции [realms], в первых двух пунктах указываем КД, в третьем имя домена. Кстати, я взеде уазал имя домена, т.к. ресолв домена, по умолчанию ведет на первый попавшийся КД.

3. Включаем поддержку GSSAPI в Опенфаере. идем в каталог опенфаер\конф и видим там файл openfire.xml. Делаем копию этого файла, на всяк случай.

В конец файла, перед закрывающим тегом добавляем следующее

REALM.COM меняем под себя, остальное оставляем как есть.

4. Идем в опенфаер, если запущен, или запускаем, если нет.
На вкладке System Properties изменяем/добавляем параметр «xmpp.fqdn». В нашем примере это «servername.domain.com», т.е. FQDN КД.

Читайте также:  Angry ip scanner linux установка

Настройка виндового клиента

Копируем файл krb5.ini с сервака в каталог винды на клиенте. Правим реестр.

Для Windows 2000 SP4, Windows 2003 Server или Windows Vista:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters
Value Name: AllowTGTSessionKey
Value Type: REG_DWORD
Value: 1

Для винды XP SP2, SP3

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos
Value Name: AllowTGTSessionKey
Value Type: REG_DWORD
Value: 1

Ребутимся клиентом. Для чистоты эксперимента, можно грохнуть каталог Spark в профиле юзера.

Запускаем Спарк и радуемся. Если не радуемся, проверяем все с начала. За одним сравниваем с английским вариантом. Хотя, я сам копипастил, опкосячиться не должон.

Тут все довольно тривиально. Качаем ред5 с сайта, указанного в начале этого топега. Ложим red5.war в каталог опенфаер\plugins. Через некоторое время опенфаер запалит новый плагин и автоматически его подключит. Перезапускаем Опенфаер.

7.1 Настройка SSO openfire

Настройка сервера jabber/xmpp с базой данных единого входа SSO на FreeIPA.

Требования

В примере домен IPA — IPA.EXAMPLE.COM. Сервер, содержащий каталог kercos kdc, ldap и DNS-сервер, — ipa.example.com.

  • сервер, подключенный к домену IPA, где мы установим программное обеспечение jabber/xmpp.

В данном случае сервер openfire.example.com.

Установка

Установите его от пользователя root:
eсли вы используете РЕД ОС версии 7.1 или 7.2, выполните команду:

eсли вы используете РЕД ОС версии 7.3 и старше, выполните команду:

Конфигурирование

Переведите selinux в режим disabled.

Заменив текст SELINUX=enforcing на SELINUX=disabled

Более подробно см.ссылку
Не забудьте включить selinux после завершения настройки.

Openfire имеет приятный веб-интерфейс для настройки чат-сервера. Чтобы получить доступ к нему, нам нужно сначала запустить демон openfire:

Запуск демона

Настройка из вебинтерфейса

Веб-интерфейс доступен по адресу openfire.example.com:9090

Выберите русский язык и нажмите кнопку «Continue»;

В поле «Доменное имя XMPP» введите fqdn чат-сервера: openfire.example.com. Другие настройки можно оставить без изменений, затем нажмите «Продолжить»;

Подключите стороннюю базу данных или используйте встроенную базу данных. Нажмите «Продолжить»;

Выберите «Сервер каталогов (LDAP)» и нажмите «Продолжить»;

Далее заполните fqdn ldap-сервера, в нашем случае:.ipa.example.com. Оставьте стандартный порт ldap (389) и в качестве базы ldap выберите cn= accounts,dc =example,dc = com. Введите администратора DN, в данном случае uid=admin,cn=users,cn=accounts,dc=example,dc=com как на скриншоте.

Оставьте поля аутентификации пустыми (если вы не изменили стандартную установку ipa, ipa разрешает анонимные привязки ldap, если вы отключили это, тогда вам нужно будет ввести имя пользователя / пароль для привязки к серверу ldap) и нажать «Тест», вы должны увидеть сообщение об успешном завершении.

Следующий экран (Настройки профиля: User Mapping) можете ничего не изменять. Просто убедитесь, что в поле «имя пользователя» стоит значение «uid» и нажмите «Продолжить». Вы также можете нажать «Настройки теста», и вы должны увидеть некоторую информацию о своих пользователях ipa, поскольку openfire сопоставляет их с собственной базой данных.

Следующий экран — Настройки профиля: Групповое сопоставление. Откройте «дополнительные настройки» и заполните там «(cn = ipausers)». Этот фильтр получит все члены группы ldap «ipausers» (которая является стандартной группой для каждого пользователя). Его можно использовать, чтобы автоматически добавлять эту группу в адресную книгу каждому клиенту.

Можно использовать фильтр ldap для получения нескольких групп. Если у нас есть 2 группы, ipausers и yurist, мы можем использовать этот фильтр для создания двух групп openfire:

Читайте также:  Для linux надо устанавливать

Вы можете отредактировать ldap-фильтр после настройки на веб-интерфейсе (вкладка свойств сервера).

Последним шагом в настройке является учетная запись администратора, введите «admin», и подтвердите. После этого вы можете войти в консоль администратора openfire. Введите имя пользователя и пароль администратора.

Если теперь вы нажмете «Пользователи/Группы», вы увидите своих пользователей ipa на сервере openfire.

Конфигурация SSO

dns autodiscovery

Клиенты xmpp/jabber могут использовать записи dns srv для поиска серверов. Это очень полезно. Мы добавим следующую запись srv в нашу dns зону ipa.example.com:

где _xmpp-client._tcp — это запись, 0 — приоритет, 100 — вес, 5222 — это порт tcp, а openfire – сервер. У вас должна существовать А запись сервера openfire.

Теперь мы можем подключиться к pidgin только с доменом example.com вместо openfire.example.com, автообнаружение dns автоматически обнаружит сервер.

Создать основную цель службы xmpp

Нам нужно создать основную службу обслуживания kerberos и подключить ее к чат-серверу openfire.example.com. Используйте веб-интерфейс ipa или консоль (у вас должен быть действительный билет администратора kerberos):

Проверьте созданную службу:

Как вы видите, у этого хоста есть два принципиала обслуживания, и xmpp.

Получите keytab для принципиала службы xmpp

Выполните на сервере openfire команду

Здесь мы выгружаем keytab для xmpp/openfire.example.com в файл openfire.keytab с правильным шифрованием.

Поместите openfire.keytab в /usr/share/openfire/conf/, сделайте его читаемым только для пользователя — daemon (openfire работает как пользовательский демон).

gss.conf

создайте файл gss.conf в /opt/openfire/conf с похожим контентом:

openfire.xml

последний шаг — отредактировать /usr/share/openfire/conf/openfire.xml и добавить блок gssapi/sasl. Добавьте его в конец файла перед тегами true

Перезапустите демон openfire

Стоит отметить, что в файле openfire.xml, по-видимому, не хватает информации, которую мы только что добавили после перезагрузки демона. Информация была добавлена ​​в базу данных, но она исчезла из XML-файла. На веб-интерфейсе сервера openfire на вкладке настроек сервера будут установлены настройки.

Логин с SSO

На рабочей станции введенной в домен установите пакет krb5-workstation и pidgin:
для РЕД ОС версии 7.1 или 7.2:

для РЕД ОС версии 7.3 и старше:

Запустите pidgin (приложения -> интернет ->Клиент обмена мгновенными сообщениями Pidgin);

Добавьте учетную запись xmpp: в закладке «Имя пользователя» введите имя пользователя с именем пользователя ipa, которое вы хотите протестировать, в поле домена заполните имя домена (EXAMPLE.COM); на вкладке «Дополнительно» должен быть заполнен только «порт подключения» (5222), а «Безопасность подключения» должна «требовать шифрования». Вот и все, нажмите «Сохранить», и вам будет предложено принять сертификат с сервера.

Проверьте получение дополнительного билета kerberos с сервере xmpp:

Для того, что бы у клиентов появился список пользователей, настройте это на openfire сервере.

Перейдите на вкладку Пользователи и группы, Группы. Нажмите на группу ipausers. Включите совместный список контактной группы и введите её название. Выберите «Разрешенная группа пользователей» и «Все пользователи».

Нажмите на кнопку «Сохранить список настроек контактов».

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Оцените статью