Уважаемые эксперты, прощу помощи.
Как проверить аутентификацию через openldap?
Первый раз настраиваю openLDAP (на Centos 7), настраивала для авторизации через openLDAP redmine и openfire. Ни в одном сервисе не получается залогиниться через ldap.
1. Проверка через redmine
Проверяла настройку с другого Centos, через
, где ldap1 - это пользователь, созданный на сервере, мигрированный в ldap. С Centos-клиента могу авторизоваться на сервере через
Теперь, собственно, к Redmine. Стоит на другой машине в локальной сети, на самой машине прописала в
локальный IP сервера с openLDAP и имя локального домена local.domen
В редмине в режимах аутентификации прописываю
- имя профиля - openLDAP
- Компьютер - local.domen
- Порт - 389 (на сервере открыт, на редминовский машине - тоже)
- Учетная запись - ldap1
- Пароль - пароль от пользователя ldap1, который был задан на сервере openLDAP перед миграцией
- BaseDN - dc=local,dc=domen
- Атрибут Login - sAMAccountName
- Имя - givenName
- Фамилия - sN
- email - mail
После этого провожу проверку - Редмин пишет «Подключение успешно установлено».
Пробую залогиниться тем же ldap1 - «Неправильное имя пользователя или пароль».
2. Проверка через авторизацию openfire.
Устанавливаю openfire, имя сервера - openfire, прописываю сервер авторизации - local.domen, Base DN - dc=local,dc=domen, логин - cn=Manager,dn=local,dc=domen, пароль от него, тест настроек успешен, администратором назначаю ldap1, проверка - успешна после ввода пароля. В админку openfire захожу под ldap1, вижу всех пользователей ldap.
А вот авторизоваться клиентом не могу - ни один логин/пароль от ldap не подходит - invalid username or password. В качестве сервера ввожу имя openfire, в hosts прописан IP openfire. Порт на openfire 5222 открыла.
На сервере в
вот такое выводит после подключений:
2016.12.23 13:49:20 WARN [socket_c2s-thread-3]: org.jivesoftware.openfire.nio.ConnectionHandler - Closing connection due to exception in session: (0x000000E3: nio socket, server, /192.168.1.**:3273 => /192.168.1.***:5222)
javax.net.ssl.SSLHandshakeException: SSL handshake failed.
at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:487)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
at org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:109)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:410)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:710)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:664)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:653)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1124)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.net.ssl.SSLException: Received fatal alert: certificate_unknown
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1666)
at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634)
at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1800)
at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083)
at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907)
at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781)
at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)
at org.apache.mina.filter.ssl.SslHandler.unwrap(SslHandler.java:728)
at org.apache.mina.filter.ssl.SslHandler.unwrapHandshake(SslHandler.java:666)
at org.apache.mina.filter.ssl.SslHandler.handshake(SslHandler.java:552)
at org.apache.mina.filter.ssl.SslHandler.messageReceived(SslHandler.java:351)
at org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:468)
... 15 more
Судя по логам, подключение не прошло из-за SSL, ничего не настраивала, все из коробки, в качестве решения гугл пердложил проверить версию java и 7-ю обновить на 8,
java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b15)
OpenJDK 64-Bit Server VM (build 25.111-b15, mixed mode)
Проверила на сервере ldap - пользователь есть, в ldap’е он есть, вывод команды дает следующее
ldapsearch -x cn=ldap1 -b dc=local,dc=domen
# extended LDIF
# ldap1, People, local.domen
dn: uid=ldap1,ou=People,dc=local,dc=domen
uid: ldap1
cn: ldap1
sn: ldap1
mail: ldap1@local.domen
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e2NyeXB0fSQ2JHdNdWtqcm5uJC96cGJtL1FzM0FRVDJ4NHNnMC5vQ3B5WkdQUllJa3NMWFpTSWwucEZnUjJzRWwwUW5OT3VwQzdSb1RJbkpzUXZJdVJ3bXlHUi41eEZONkRwR2V4RG8v
shadowLastChange: 17154
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 1003
gidNumber: 1003
homeDirectory: /home/ldap1
# ldap1, Group, local.domen
dn: cn=ldap1,ou=Group,dc=local,dc=domen
objectClass: posixGroup
objectClass: top
cn: ldap1
userPassword:: e2NyeXB0fXg=
gidNumber: 1003
# search result
search: 2
result: 0 Success
# numResponses: 3
Т.е. получается пользователь один, но в разных группах у него разные пароли? Или пользователей все-таки два?
По этому параметру
userPassword:: e2NyeXB0fXg=
нашла только
http://www.openldap.org/lists/openldap-software/200304/msg00083.html, из чего поняла, что какие-то пароли хешируются и эти аккаунты работают, а пароли со значением
e2NyeXB0fXg= имеют не работающие аккаунты
Итого, вопроса три:
1. Редмин не распознает пользователей ldap, как проверить, где ошибка?
2. Openfire не распознает пользователей ldap через клиент, а вот через веб-интерфейс в админ-панели управления сервером логинит и видит всех пользователей ldap. Как починить?
3. Два пользователя (ldap1) в ldap в разных группах. Это норма или мои кривые руки? Пароли разные (судя по хешам), может это влиять на работу клиентов (redmine и openfire)? Если да, то как это исправить?
P.S. Есть более простой способ проверки правильной настройки openLDAP? :)