Openfire + SSO

Материал из ColemanWiki
Перейти к: навигация, поиск

Назад в раздел IT

Установка Openfire[править]

Устанавливал Денис.

Настройка связи с AD[править]

Настраивал связь с доменом Денис

Изменение контроллера домена в настройках Openfire через mysql

select * from openfire.ofProperty where name='ldap.host';
| name      | propValue               | encrypted |
| ldap.host | srv-dc-nl.coleman.local | 0         |
update openfire.ofProperty set propValue='srv-dc-nl.coleman.local' where name='ldap.host';

Включение SSO[править]

Разделение по пунктам из инструкции, что то поменял, что то дополнил, что то уже было настроено

srvdca1.coleman.local AD DC + DNS
srv-chat.coleman.local Openfire server 4.2.3
test-win81-akl.coleman.local Win8 + Spark 2.8.3

Подготовка домена[править]

  • 1. Создаем доменного пользователя openfire
  • 2. Ставим ему:
    • User cannot change password
    • Password never expires
    • Do not require Kerberos preauthentication
  • 3. Создаем пользователя для тестирования SSO (используем testuser)
  • 4-6. На любом DC открываем CMD под админом и запускаем

это строчка во первых не факт что нужна, во вторых не срабатывает даже если srv-chat в домене

 setspn –U –S XMPP/srv-chat.coleman.local@COLEMAN.LOCAL openfire

сработала вот эта

 setspn -A xmpp/srv-chat.coleman.local@COLEMAN.LOCAL openfire

следующие 2 строчки отличаются только тем что вторая сохраняет keytab на диск c, скорее всего первая строчка не нужна

 ktpass /princ XMPP/srv-chat.coleman.local@COLEMAN.LOCAL /mapuser openfire@coleman.local /pass * /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
 ktpass /princ xmpp/srv-chat.coleman.local@COLEMAN.LOCAL /mapuser openfire@coleman.local /pass * /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT /out c:\openfire.keytab

для proxykerb вводили такое:

 ktpass -princ HTTP/proxykerb.coleman.local@COLEMAN.LOCAL -mapuser proxykrb -pass C0lem@n -ptype KRB5_NT_PRINCIPAL -out C:\123\proxykrb.keytab

У пользователя openfire изменятся атрибуты

servicePrincipalName xmpp/srv-chat.coleman.local
userPrincipalName xmpp/srv-chat.coleman.local@COLEMAN.LOCAL
  • 7. GPO (не потребовалось)
Computer Configuration
Policies
Windows Settings
Security Settings
Local Policies
Security Options: Network Security: Configure encryption types allowed for Kerberos
Enable all encryption types
  • 8. В DNS нужно сервера и всех клиентов сделать PTR запись (уже есть)

Подготовка сервера Openfire[править]

  • 9. (уже сделано) Устанавливаем Openfire
  • 10-12. (уже сделано) в CMD заходим в C:\Program Files (x86)\Openfire\bin\

запускаем там

openfire-service /install
openfire-service /start
  • 13. Добавляем в реестр (this change allows java to access the windows Kerberos ticket cache):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters

Value Name: AllowTGTSessionKey
Value Type: REG_DWORD
Value: 1
  • 14. Скопировать openfire.keytab в C:\Program Files (x86)\Openfire\resources

на линуксе в /usr/share/openfire/resources/

  • 15. Создавать файл C:\Program Files (x86)\Openfire\conf\gss.conf

на линуксе /etc/openfire/gss.conf

com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule
required
storeKey=true
keyTab="/usr/share/openfire/resources/openfire.keytab"
doNotPrompt=true
useKeyTab=true
realm="COLEMAN.LOCAL"
principal="xmpp/srv-chat.coleman.local@COLEMAN.LOCAL"
debug=true;
};

debug=true можно будет для продакшна поменять на false

  • 16. Create a Kerberos configuration file and save it as krb5.ini to C:\Windows of the server:

на линуксе в /etc/krb5.conf

[libdefaults]
default_realm = COLEMAN.LOCAL
default_keytab_name = /usr/share/openfire/resources/openfire.keytab
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]
COLEMAN.LOCAL = {
kdc = srvdc3.coleman.local
kdc = srvdca1.coleman.local
admin_server = srvdc3.coleman.local
default_domain = coleman.local
}

[domain_realms]
domain.com = COLEMAN.LOCAL
.domain.com = COLEMAN.LOCAL

Для проверки билета можно использовать команды:

 kinit -V -k -t /usr/share/openfire/resources/openfire.keytab xmpp/srv-chat.coleman.local@COLEMAN.LOCAL
 klist -ek  /usr/share/openfire/resources/openfire.keytab

Подготовка Openfire[править]

Server
Server Settings
Profile Settings
LDAP Settings
Host: srvdca1.coleman.local
Port: 389
Base DN: OU=Coleman,DC=coleman,DC=local
Administrator DN: CN=Administrator,CN=Users,DC=test,DC=com
  • 19. В админке добавляем такие Properties
Property Name Property Value
authorization.classList org.jivesoftware.openfire.auth.DefaultAuthorizationPolicy
sasl.gssapi.config /etc/openfire/gss.conf
sasl.gssapi.debug true
sasl.gssapi.useSubjectCredsOnly False
sasl.mechs.00002 PLAIN
sasl.mechs.00008 GSSAPI
sasl.realm COLEMAN.LOCAL
xmpp.fqdn srv-chat.coleman.local

sasl.mechs.0000X отвечает за методы авторизации,
у нас они указываются отдельными ключами с добавлением .0000X в название ключа,
но в инструкции просто указывается один ключ sasl.mechs с типами через запятую

  • 20. Перезапустить Openfire
  • 21. Перезапустить сервер на котором вертится Openfire

Подготовка клиентской машины[править]

  • 22. Добавляем в реестр (this change allows java to access the windows Kerberos ticket cache):

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters

Value Name: AllowTGTSessionKey
Value Type: REG_DWORD
Value: 1
  • 23. (не нужно) Скопировать krb5.ini из пункта 15 с сервера Openfire в папку C:\Windows
  • 24. Устанавливаем Spark 2.8.3
  • 25-26. Перезапускаем клиентскую машину и логинимся доменным пользователем
  • 27. Открываем Spark -> кнопка Advanced -> вкладка SSO -> включаем Use Single Sign-On (SSO) via GSSAPI
  • 28. Нажимаем вход Login

Конфиг Спарка[править]

Из инструкции Ильи
Настройки именно SSO для Spark'а хранятся в AppData\Roaming\Spark\spark.properties
Можно либо добавлять строчки:

ssoEnabled=true
ssoMethod=file
autoLoginEnabled=true

Либо просто заменять файл с настройками, что я и сделал,
он лежит на \\srv-it\app\spark2.8.3\spark.properies либо запустить bat файл на
\\coleman.local\netlogon\SparkSSOpersonal.bat - заменить файл у текущего пользователя (не требует административных прав)
\\coleman.local\netlogon\SparkSSO.bat - заменить файл у всех пользователей компьютера (требует административные права, а так же это способ плох тем, что либо батник будет затирать пользовательские настройки каждый раз при включении ПК либо применяется 1 раз и тогда у нового пользователя ПК не будет настроек SSO)

Баг с не работающей одновременно SSO и Plain авторизацией.[править]

https://issues.igniterealtime.org/browse/SPARK-1747