При написании статьи я использовал материал с http://www.igniterealtime.org/community/docs/DOC-1362 (англ).
Оф.сайт Опенфаера, Спарка и плагинов к опенфаеру и спарку - 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 - наша учетка@имя домена в нижнем регистре. Звездочтками отмечен пароль для этой учетки, соответственно, замените на свой.
на выходе получим что-то типа
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. Делаем копию этого файла, на всяк случай...
В конец файла, перед закрывающим тегом </jive> добавляем следующее
<!-- sasl configuration -->
<sasl>
<mechs>GSSAPI</mechs>
<!-- Set this to your Keberos realm name which is usually your AD domain name in all caps. -->
<realm>REALM.COM</realm>
<gssapi>
<!-- You can set this to false once you have everything working. -->
<debug>true</debug>
<!-- Set this to the location of your gss.conf file created earlier -->
<!-- "/" is used in the path here not "\" even though this is on Windows. -->
<config>C:/Program Files/Openfire/conf/gss.conf</config>
<usesubjectcredsonly>false</usesubjectcredsonly>
</gssapi>
</sasl>
<authorization>
<classlist>org.jivesoftware.openfire.auth.DefaultAuthorizationPolicy</classlist>
</authorization>
REALM.COM меняем под себя, остальное оставляем как есть.
4. Идем в опенфаер, если запущен, или запускаем, если нет.
На вкладке System Properties изменяем/добавляем параметр "xmpp.fqdn". В нашем примере это "servername.domain.com", т.е. FQDN КД.
Перезапускаем ОФ.
Настройка виндового клиента
Копируем файл 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 в профиле юзера.
Запускаем Спарк и радуемся. Если не радуемся, проверяем все с начала. За одним сравниваем с английским вариантом. Хотя, я сам копипастил, опкосячиться не должон...
Установка red5-плагина
Тут все довольно тривиально. Качаем ред5 с сайта, указанного в начале этого топега. Ложим red5.war в каталог опенфаер\plugins. Через некоторое время опенфаер запалит новый плагин и автоматически его подключит. Перезапускаем Опенфаер.
В папке плагинс\ред5\Spark будет лежать red5-plugin.jar. Его копируем в папку плагинс у Спарка и перезапускаем спарк. Внимательно изучаем новые элементы меню в Спарке. Да, для корректной работы должен быть установлен flashplayer plugin для браузеров.
0 коммент.:
Отправить комментарий