7.1 Настройка 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 ~] yum install openfire

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

Отключите selinux. Для этого отредактируйте файл /etc/selinux/config. Присвойте параметру SELINUX значение disabled.

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

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

[root@openfire ~] systemctl start openfire
[root@openfire ~] # systemctl enable 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:

(|(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

# yum –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. Включите совместный список контактной группы и введите её название. Выберите «Разрешенная группа пользователей» и «Все пользователи».

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

 

 

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