Alfresco: авторизация пользователей в Zimbra LDAP + SSL

Есть сервер с Alfresco 3.4d и сервер с Zimbra 7. Настроим авторизацию пользователей в LDAP Zimbra. Будем использовать SSL шифрование для LDAP. Есть одна трудность — по-умолчанию, LDAP Zimbrы работает на 389 порту и поддерживает конечно TLS, но Alfresco с ним нормально не работает. Для того, чтобы LDAP Zimbrы работал также на 636 порту с поддержкой SSL нужно подправить конфигурацию.

На сервере Zimbra заходим в консоль:

su - zimbra


Добавляем новую переменную:

zmlocalconfig -e ldaps_url="ldaps://mail.mydomain.com:636"


Правим скрипт /opt/zimbra/bin/ldap. Ищем строки соответствующие. Ниже закоментировано то что было, под этим что стало:

#zmsetvars \
#  ldap_is_master \
#  ldap_url \
#  ldap_bind_url \
#  ldap_master_url \
#  ldap_replica_rid  \
#  ldap_replication_password \
#  ldap_common_require_tls

zmsetvars \
  ldap_is_master \
  ldap_url \
  ldap_bind_url \
  ldap_master_url \
  ldap_replica_rid  \
  ldap_replication_password \
  ldap_common_require_tls \
  ldaps_url


# sudo /opt/zimbra/libexec/zmslapd -l LOCAL0 -u zimbra -h "${bind_url} ldapi:///" \
# -F /opt/zimbra/data/ldap/config -d 1 2>&1 | egrep "failed|error" &

sudo /opt/zimbra/libexec/zmslapd -l LOCAL0 -u zimbra -h "${bind_url} ${ldaps_url} ldapi:///" \
-F /opt/zimbra/data/ldap/config -d 1 2>&1 | egrep "failed|error" &


# sudo /opt/zimbra/libexec/zmslapd -l LOCAL0 \
# -u zimbra -h "${bind_url} ldapi:///" -F /opt/zimbra/data/ldap/config
        
sudo /opt/zimbra/libexec/zmslapd -l LOCAL0 \
-u zimbra -h "${bind_url} ${ldaps_url} ldapi:///" -F /opt/zimbra/data/ldap/config


Рестартуем:

zmcontrol restart


Теперь OpenLDAP, входящий в состав Zimbra работает на 2х портах.

Почитать

Для сервера Alfresco нам понадобится сертификат сервера Zimbra. Копируем файл ca.pem из /opt/zimbra/conf/ca на сервер Alfresco.

Используем keytool, чтобы добавить сертификат в хранилище:

/opt/alfresco/java/bin/keytool -import -alias mail.mydomain.com -keystore /opt/alfresco/keystore -file ./ca.pem


ca.pem удаляем — он нам больше не нужен.

Правим:

/opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/Authentication/ldap/ldap-authentication.properties

Мои настройки:

ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=uid=%s,ou=people,dc=domain,dc=com
ldap.authentication.java.naming.provider.url=ldaps://mail.mydomain.com:636
ldap.authentication.defaultAdministratorUserNames=user1
ldap.synchronization.active=false


user1 — пользователь, который по-умолчанию получит права администратора Alfresco.

Правим /opt/alfresco/tomcat/shared/classes/alfresco-global.properties. Создаем цепочку авторизации, т.е. сначала внутренняя авторизация, затем с использованием LDAP:

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap


Правим скрипт запуска /opt/alfresco/tomcat/bin/catalina.sh. Добавляем следущюю строку:

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/opt/alfresco/keystore"


Это необходимо, чтобы виртуальная машина Java нашла файл с хранилищем ключей.

Перезапускаем Alfresco.

Комментарии (14)

RSS свернуть / развернуть
+
0
Все сделал как тут написано. Пользователи импортировались. Но пользователей не пускает, говорит «ваши аутентификационные сведения не были опознаны». Помогите где искать ошибку!?
avatar

gogasir

  • 16 ноября 2011, 15:29
+
0
Прежде всего в catalina.out что пишет нужно посмотреть.
avatar

Sergei_T

  • 16 ноября 2011, 15:45
+
0
Также возможно неправильно прописан keystore
avatar

Sergei_T

  • 16 ноября 2011, 15:49
+
0
Нашел проблему. Все дело в это в одной строчке, было 'ldap.authentication.userNameFormat=uid=%s,ou=people,dc=XXXX,dc=com'
Нужно было 'ldap.authentication.userNameFormat=uid=%s,ou=people,dc=zibra,dc=XXXX,dc=com'

Теперь другая проблема, импортированные Имена пользователей в Alfresco отображаются вопросами.
avatar

gogasir

  • 16 ноября 2011, 16:04
+
0
Вернее наоборот!
Было:'ldap.authentication.userNameFormat=uid=%s,ou=people,dc=zibra,dc=XXXX,dc=com'
Вот так надо:'ldap.authentication.userNameFormat=uid=%s,ou=people,dc=zibra,dc=XXXX,dc=com'
avatar

gogasir

  • 16 ноября 2011, 16:07
+
0
Почитайте на всякий случай:

mtaalamu.ru/blog/admining/1851.html
mtaalamu.ru/blog/admining/1201.html

А сервер на чем, mysql из комплекта alfresco? (возможно неправильный collation в mysql)
avatar

Sergei_T

  • 16 ноября 2011, 16:15
+
0
Уважаемые, помогите! Стоит на сервере Зимбра. Вчера поставил Альфреско. Настроил все точно по мануалам из этой статьи. Перезагрузил зимбру с альфреской. При попытке найти пользователей в альфреско ничего не получается. Я так понимаю, что пользователи не синхронизировались. Что делать? Перепроверял все раз 20 уже!
Есть правда подозрение, что грабли из-за кривости импорта сертификата. Keytool сначала спрашивает, стоит ли доверять сертификату и нужно ли его импортировать, потом говорит, что импортировал сертификат в keystore, а в конце выдает ошибку типа "/opt/alfresco/keystore — это директория". Ну понятно, что директория, но чего ругаться то?!
И еще: проверил открытость портов. Оказалось 389 открыт, а 636 нет. При этом в настройках брандмауэра сказано пускать всех и отовсюду. Перевешивание синхронизации на 389 порт результатов не дает :-( Вобщем уже голову сломал над вопросом «что делать?!»
avatar

Ritm

  • 07 января 2013, 04:38
+
0
Здравствуйте!
Чтобы openldap работал на двух портах вот это делали? —
www.zimbra.com/forums/administrators/24352-enable-ldap-over-tls-_and_-ssl.html

Надо бы детально вывод команды keystore сюда
avatar

Sergei_T

  • 07 января 2013, 10:19
+
0
Сделал. Но если я убираю строку
-u zimbra -h "${bind_url} ldapi:///" -F /opt/zimbra/data/ldap/config
и меняю ее на
avatar

Ritm

  • 07 января 2013, 18:02
+
0
Сделал. Но если я убираю строку
-u zimbra -h "${bind_url} ldapi:///" -F /opt/zimbra/data/ldap/config
и меняю ее на
-u zimbra -h "${bind_url} ${ldaps_url} ldapi:///" -F /opt/zimbra/data/ldap/config
то у меня не стартует LDAP. Говорит что в 138 строке имеется ошибка. bind_url — команда не найдена, как и «ldaps_url», как и "-u"
Если я оставляю обе строки, то как я понимаю у меня LDAP работает на 389 порту и не работает на 636.
Под утро засыпая я подумал, а в подключении ли дело? Возможно ли, что ZIMBRA хранит информацию о пользователях где-то еще. Т.е. не в LDAP? Понимаю, звучит бредовенько, но может быть в этом проблема?
avatar

Ritm

  • 07 января 2013, 18:07
+
0
Думаю нужно проверить переменную ldaps_url задана ли она правильно и задана ли вообще
avatar

Sergei_T

  • 08 января 2013, 00:01
+
0
кроме того в скрипте можно жостко вписать значения переменных
avatar

Sergei_T

  • 08 января 2013, 00:02
+
0
Проверял неоднократно. значение верное. Пробовал по одному из примеров прописать значение жестко (через пробел и ldap и ldaps). Ничего не выходит. Помогло только в настройках Alfresco указать не 636 порт, а 389. Ну и не ldaps, а ldap конечно. Теперь все синхронизировалось. Но всплыла еще одна проблема: у меня в зимбре почему-то не работает MTA. При запуске пишет, что удачно стартануло, а в WEB-консоли говорит, что не запущено. И теперь еще почему то не все e-mail клиенты нормально работают. Outlook'и работают нормально. А вот например KMail не работает вообще:-(
avatar

Ritm

  • 09 января 2013, 21:28
+
0
нужно найти что именно не работает — pop, smtp, imap?
разрешен ли imap в настройках?

Касаемо что в админке пишет что мта не работает — это все фигня, там есть просто косяки со сбором статистики, это не значит что mta не работает))
avatar

Sergei_T

  • 10 января 2013, 17:44

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.