РЕШЕНО Alfresco LDAP sync - сбрасывается значение полей.

Добрый день коллеги!

Имеем:
  • alfresco 4.2.1 EE (без поддержки)
  • Ubuntu 12.04.4

Используя документацию "Example: authentication and synchronization with one ldap-ad subsystem" настроил синхронизацию следующим образом:


alfresco-global.properties:

### authentication ###
authentication.chain=kerberos1:kerberos,ldap1:ldap-ad

### LDAP ###
ldap.authentication.allowGuestLogin=false
ldap.authentication.active=false
ldap.authentication.userNameFormat=%s@avtor.ru
ldap.authentication.java.naming.provider.url=ldap://smb
ldap.authentication.defaultAdministratorUserNames=Administrator,alfresco
ldap.synchronization.java.naming.security.principal=reader@avtor.ru
ldap.synchronization.java.naming.security.credentials=Jlyfljlktnjv44
ldap.synchronization.userSearchBase=CN=Users,DC=avtor,DC=ru
ldap.synchronization.groupSearchBase=CN=Users,DC=avtor,DC=ru

### CRON ###
synchronization.import.cron=1 */5 * * * ? *


В профиле пользователей появился защищёный от редактирования ряд полей. Например поле e-mail.

Проблема:
  1. Создаём в LDAP пользователя: chapaev , Василий Чапаев , e-mail: chapaev@yandex.ru
  2. Входим под ним в alfresco, входим в его профиль, видим, что поля из LDAP приняли необходимые значения и защищены от редактирования.
  3. Например поле e-mail, имеет значение: chapaev@yandex.ru
  4. Вносим в LDAP каталог изменение e-mail (например): chapaeff@mail.com
  5. Снова входим в его профиль и видим, что изменения применились из LDAP каталога. (согласно расписанию cron) Т.е. поле e-mail, приняло значение: chapaeff@mail.com
  6. Вносим в любое доступное поле профиля изменение (например устанавливаем "аватар картинку", или заполняем поле телефон).
  7. Нажимаем 'Save chagnes'.
  8. Видим, что поле e-mail, снова имеет прежнее значение: chapaev@yandex.ru (значение первоначальной информации из LDAP)

Поле e-mail будет иметь прежнее (самое первое) значение ровно до того момента, пока я не зайду в LDAP запись и что-нибудь не обновлю там, чтобы вызвать полную синхронизацию записи в alfresco. Т.е. перезапуск alfresco также не помогает. Помогает только изменение TimeShtamp в записи LDAP, чтобы вызвать полную пересинхронизацию записи с alfresco. Однако, при последующем изменении записи, всё снова возвращается на первоначальное значение поле в LDAP!

Подскажите пожалуйста, что я делаю не правильно? Что необходимо сделать, чтобы поля профиля привязанные к LDAP не сбрасывались на первоначальные значения?

Очевидно, что после того, как пользователь отредактировал свой профиль, alfresco берёт ВСЕ значения полей профиля из какого-то кеша... При том кеша который она созадала в первый раз при синхронизации.

Комментарии

AVTOR аватар
РЕШЕНО!

Друзья, ответ выглядит следующим образом:

Когда пользователь входит в систему, share заносит в кеш его свойства (а именно: все поля, имя, email и т.д.), и если изменить данные в LDAP (AD), в тот момент когда пользователь "залогинен" в системе, и сделать полную синхронизацию с каталогом LDAP (у меня это для тестов было: synchronization.import.cron=1 */5 * * * ? * - каждые пять минут), то не смотря на успешную синхронизацию данные подтянутся из кеша share и всё будет плохо.

Вывод: по-умолчанию полная синхронизация выполняется в 0 часов каждые сутки. Так-как разработчики alfresco справедливо предполагают, что в это время никого нет в системе (ну или почти никого). И всё становится успешно.

Решение: или выгнать человека из системы, поля которого мы хотим изменить в LDAP и сделать синхронизацию вручную, или по регламенту на ночь заставлять всех выключать компьютеры, чтобы ночью всё само синхронизировалось, и утром вошедшие люди уже подцепили бы новые поля.