3.8.9.2 Настройка SSO openfire
Скачать документНастройка сервера jabber/xmpp с базой данных единого входа SSO на FreeIPA.
Требования
- Нужен рабочий домен ipa.
В примере домен IPA - IPA.EXAMPLE.COM. Сервер, содержащий каталог kercos kdc, ldap и DNS-сервер, - ipa.example.com.
- сервер, подключенный к домену IPA, где мы установим программное обеспечение jabber/xmpp.
В данном случае сервер openfire.example.com.
Установка
Установите его от пользователя root:
[root@openfire ~] dnf install openfire
Конфигурирование
Переведите selinux в режим disabled.
nano /etc/selinux/config
Заменив текст SELINUX=enforcing
на SELINUX=disabled
Более подробно см.ссылку
Не забудьте включить selinux после завершения настройки.
Openfire имеет приятный веб-интерфейс для настройки чат-сервера. Чтобы получить доступ к нему, нам нужно сначала запустить демон openfire:
Запуск демона
[root@openfire ~] systemctl start openfire [root@openfire ~] # systemctl enable openfire
Настройка из веб-интерфейса
Веб-интерфейс доступен по адресу localhost: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:
(|(cn=ipausers)(cn=yurist))
Вы можете отредактировать ldap-фильтр после настройки на веб-интерфейсе (вкладка свойств сервера).
Последним шагом в настройке является учетная запись администратора, введите «admin», и подтвердите. После этого вы можете войти в консоль администратора openfire. Введите имя пользователя и пароль администратора.
Если теперь вы нажмете «Пользователи/Группы», вы увидите своих пользователей ipa на сервере openfire.
Конфигурация SSO
dns autodiscovery
Клиенты xmpp/jabber могут использовать записи dns srv для поиска серверов. Это очень полезно. Мы добавим следующую запись srv в нашу dns зону ipa.example.com:
_xmpp-client._tcp 0 100 5222 openfire
где _xmpp-client._tcp - это запись, 0 - приоритет, 100 - вес, 5222 - это порт tcp, а openfire – сервер. У вас должна существовать А запись сервера openfire.
Проверьте запись:
$ host -t srv _xmpp-client._tcp.example.com _xmpp-client._tcp.example.com имеет запись SRV 0 100 5222 openfire.example.com.
Теперь мы можем подключиться к pidgin только с доменом example.com вместо openfire.example.com, автообнаружение dns автоматически обнаружит сервер.
Создать основную цель службы xmpp
Нам нужно создать основную службу обслуживания kerberos и подключить ее к чат-серверу openfire.example.com. Используйте веб-интерфейс ipa или консоль (у вас должен быть действительный билет администратора kerberos):
kinit admin ipa service-add xmpp/openfire.example.com
Проверьте созданную службу:
admin@openfire ~] $ipa service-find openfire.example.com ------------------ 2 services matched ------------------ Principal: postgres/openfire.example.com@EXAMPLE.COM Keytab: True Managed by: openfire.example.com Principal: xmpp/ openfire.example.com@ EXAMPLE.COM Keytab: True Managed by: openfire.example.com ---------------------------- Number of entries returned 2
Как вы видите, у этого хоста есть два принципиала: обслуживания и xmpp.
Получите keytab для принципиала службы xmpp
Выполните на сервере openfire команду
ipa-getkeytab -s ipa.example.com -p xmpp/openfire.example.com -k openfire.keytab -e des3-hmac-sha1
Здесь мы выгружаем keytab для xmpp/openfire.example.com в файл openfire.keytab с правильным шифрованием.
[admin@openfire ~] $klist -k -t openfire.keytab Имя ключевого слова: WRFILE: openfire.keytab Главный администратор KVNO ---- ----------------- ----------------------------- --------------------------- 3 06/15/12 18:29:53 xmpp/openfire.example.com@EXAMPLE.COM
Поместите openfire.keytab в /usr/share/openfire/conf/, сделайте его читаемым только для пользователя - daemon (openfire работает как пользовательский демон).
[admin@openfire ~] $ cp /root/openfire.keytab /usr/share/openfire/conf/ [admin@openfire ~] $ chown daemon:daemon /usr/share/openfire/conf/openfire.keytab
Проверьте keytab:
# kinit -k -t openfire.keytab xmpp/openfire.example.com # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: xmpp/openfire.example.com@EXAMPLE.COM Valid starting Expires Service principal 06/16/12 23:28:35 06/17/12 23:28:35 krbtgt/EXAMPLE.COM@EXAMPLE.COM
gss.conf
создайте файл gss.conf в /opt/openfire/conf с похожим контентом:
com.sun.security.jgss.accept { com.sun.security.auth.module.Krb5LoginModule required storeKey=true keyTab="/usr/share/openfire/conf/openfire.keytab" doNotPrompt=true useKeyTab=true realm="EXAMPLE.COM" principal="xmpp/openfire.example.com@EXAMPLE.COM" debug=true isInitiator=false; };
openfire.xml
последний шаг - отредактировать /usr/share/openfire/conf/openfire.xml и добавить блок gssapi/sasl. Добавьте его в конец файла перед тегами <setup>true</setup></jive>
<sasl> <mechs>GSSAPI</mechs> <realm>EXAMPLE.COM</realm> <gssapi> <debug>true</debug> <config>/usr/share/openfire/conf/gss.conf</config> <useSubjectCredsOnly>false</useSubjectCredsOnly> </gssapi> </sasl>
Перезапустите демон openfire
# systemctl restart openfire
Стоит отметить, что в файле openfire.xml, по-видимому, не хватает информации, которую мы только что добавили после перезагрузки демона. Информация была добавлена в базу данных, но она исчезла из XML-файла. На веб-интерфейсе сервера openfire на вкладке настроек сервера будут установлены настройки.
Логин с SSO
На рабочей станции введенной в домен установите пакет krb5-workstation и pidgin:
# dnf –y install krb5-workstation pidgin
Запустите pidgin (приложения -> интернет ->Клиент обмена мгновенными сообщениями Pidgin);
Добавьте учетную запись xmpp: в закладке «Имя пользователя» введите имя пользователя с именем пользователя ipa, которое вы хотите протестировать, в поле домена заполните имя домена (EXAMPLE.COM); на вкладке «Дополнительно» должен быть заполнен только «порт подключения» (5222), а «Безопасность подключения» должна «требовать шифрования». Вот и все, нажмите «Сохранить», и вам будет предложено принять сертификат с сервера.
Примите SSL-сертификат
Проверьте получение дополнительного билета kerberos с сервере xmpp:
$ klist Ticket cache: FILE:/tmp/krb5cc_500 Default principal: ipauser1@IPA.ASENJO.NX Valid starting Expires Service principal 06/16/12 23:29:03 06/17/12 23:29:00 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 06/23/12 23:29:00 06/16/12 23:29:09 06/17/12 23:29:00 xmpp/openfire.example.com@EXAMPLE.COM renew until 06/23/12 23:29:00
Для того, что бы у клиентов появился список пользователей, настройте это на openfire сервере.
Перейдите на вкладку Пользователи и группы, Группы. Нажмите на группу ipausers. Включите совместный список контактной группы и введите её название. Выберите «Разрешенная группа пользователей» и «Все пользователи».
Нажмите на кнопку «Сохранить список настроек контактов».
Дата последнего изменения: 20.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.