Настроить аутентификацию и синхронизацию с двумя LDAP в Alfresco 5.1 - PullRequest
0 голосов
/ 10 октября 2018

Выполняем переход с корпоративной версии Alfresco 4.2 на 5.1.В компании есть два домена Active Directory (основной и дочерний), поэтому в Alfresco 5.1 мы настраиваем две подсистемы LDAP (AD).

Структура свойств: / opt / tomcat7 / shared / классы / alfresco / extension / subsystems / Аутентификация / ldap-ad / ldap2 / opt / tomcat7 / shared / классы / alfresco / extension / subsystems /Аутентификация / ldap-ad / ldap1

Проблема заключается в том, что аутентификация и синхронизация работают только для одной подсистемы ldap-ad (ldap1 или ldap2), которая занимает первое место в списке цепочки аутентификации (ldap1 и ldap2).не работать вместе).

Скриншот цепочки аутентификации

Например, если ldap1 занимает первое место в списке, то логин этого пользователя из ldap2 не будет выполнен (и наоборот!).В этом случае я смотрю ошибку в alfresco.log:

Caused by: net.sf.acegisecurity.AuthenticationCredentialsNotFoundException: A valid SecureContext was not provided in the RequestContext 

Мои свойства:

/ opt / tomcat7 / shared / classes / alfresco / extension / subsystems / Authentication / ldap-ad / ldap1 / ldap-ad-authentication.properties

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@fake.local
ldap.authentication.java.naming.provider.url=ldap://fake.local:***
ldap.authentication.defaultAdministratorUserNames=fake_user
ldap.authentication.java.naming.referral=follow

ldap.synchronization.java.naming.security.principal=fake_user@fake.local
ldap.synchronization.java.naming.security.credentials=somepassword
ldap.synchronization.groupSearchBase=ou=Archiv,ou=FileServerGroups,ou=Groups,dc=fake,dc=local
ldap.synchronization.userSearchBase=dc=fake,dc=local
ldap.synchronization.groupDisplayNameAttributeName=description
ldap.synchronization.userOrganizationalIdAttributeNameCustom=distinguishedName
ldap.synchronization.com.sun.jndi.ldap.connect.pool=true

/ opt / tomcat7 / shared / классы / под открытым небом / расширение / подсистемы / аутентификация / ldap-ad / ldap2 /ldap-ad-authentication.properties

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=%s@gss.fake.local
ldap.authentication.java.naming.provider.url=ldap://gss.fake.local:***
ldap.authentication.defaultAdministratorUserNames=fake_user
ldap.authentication.java.naming.referral=follow

ldap.synchronization.java.naming.security.principal=fake_user@fake.local
ldap.synchronization.java.naming.security.credentials=somepassword%
ldap.synchronization.groupSearchBase=ou=Archiv,ou=FileServerGroups,ou=Groups,dc=gss,dc=fake,dc=local
ldap.synchronization.userSearchBase=dc=gss,dc=fake,dc=local
ldap.synchronization.groupDisplayNameAttributeName=description
ldap.synchronization.userOrganizationalIdAttributeNameCustom=distinguishedName
ldap.synchronization.com.sun.jndi.ldap.connect.pool=true

alfresco-global.properties

### Authentication ###
#authentication.chain=ldap1:ldap-ad,ldap2:ldap-ad,alfrescoNtlm1:alfrescoNtlm
authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap-ad,ldap2:ldap-ad

Заранее спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Наконец, я решил проблему, связанную с аутентификацией пользователей.Я помещаю пустую строку параметра:

ldap.authentication.userNameFormat=

для каждой подсистемы LDAP в файлы ldap-ad-authentication.properties .

После того, как пользователи из двух ldaps могут войти в системууспешно.

ldap.authentication.userNameFormat

Указывает, как сопоставить введенный пользователем идентификатор пользователя с идентификатором, передаваемым в LDAP.Если задана пустая строка (по умолчанию для подсистемы ldap), будет выполнен LDAP-запрос, включающий ldap.synchronization.personQuery и ldap.synchronization.userIdAttributeName, чтобы динамически разрешить DN из идентификатора пользователя.Это позволяет структурировать каталоги и не требует, чтобы идентификатор пользователя отображался в DN.

Если задано непустое значение, подстрока% s в этом значении будет заменена введенным идентификатором пользователя впроизвести идентификацию, переданную в LDAP.Это ограничивает имена пользователей LDAP фиксированным форматом.Рекомендуемый формат этого значения зависит от вашего сервера LDAP.

...