Openfire + SSO
Содержание
[убрать]Установка 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
- Security Options: Network Security: Configure encryption types allowed for Kerberos
- Local Policies
- Security Settings
- Windows Settings
- Policies
- 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[править]
- 17. Скачать Google Chrome (это на самом деле было в инструкци)
- 18. http://srv-chat.coleman.local:9090
- Server
- Server Settings
- Profile Settings
- LDAP Settings
- Profile Settings
- Server 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)