Код ошибки LDAP 32

Я пытаюсь синхронизировать OpenLDAP и Active Directory вместе. Для этого я использую программу под названием LSC-Project, предназначенную для подобных вещей.

Я настроил программу как можно лучше, однако не могу найти способ избавиться от следующей ошибки:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-
031001CD,
problem 2001 (NO_OBJECT), data 0, best match of:
'DC=domname,DC=com'
]; remaining name 
'uid=user1,ou=Users'

May 09 15:19:25 - ERROR - Error while synchronizing ID uid=user1,ou=Users:
java.lang.Exception:
Technical problem while applying modifications to directory
dn: uid=user1,ou=Users,dc=domname,dc=com
changetype: add
userPassword: 3+kU2th/WMo/v553A24a3SBw2kU=
objectClass: uid

Это файл конфигурации, на котором работает программа:

############################### 
Destination LDAP directory #
##############################

dst.java.naming.provider.url = ldap://192.168.1.3:389/dc=Windows,dc=com  
dst.java.naming.security.authentication = simple
dst.java.naming.security.principal = cn=Administrator,cn=Users,dc=Windows,dc=com
dst.java.naming.security.credentials = 11111
dst.java.naming.referral = ignore
dst.java.naming.ldap.derefAliases = never
dst.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
dst.java.naming.ldap.version = 3
dst.java.naming.ldap.pageSize = 1000

#########################
Source LDAP directory 
#########################

src.java.naming.provider.url = ldap://192.168.1.2:389/dc=Linux,dc=com
src.java.naming.security.authentication = simple
src.java.naming.security.principal = uid=root,ou=users,dc=Linux,dc=com
src.java.naming.security.credentials = 11111
src.java.naming.referral = ignore
src.java.naming.ldap.derefAliases = never
src.java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
src.java.naming.ldap.version = 3

#######################
Tasks configuration 
#######################

lsc.tasks = Administrator
lsc.tasks.Administrator.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.Administrator.srcService.baseDn = ou=users
lsc.tasks.Administrator.srcService.filterAll = (&(objectClass=person))
lsc.tasks.Administrator.srcService.pivotAttrs = uid 
lsc.tasks.Administrator.srcService.filterId = (&(objectClass=person)(uid={uid}))
lsc.tasks.Administrator.srcService.attrs = description uid userPassword

lsc.tasks.Administrator.dstService = org.lsc.jndi.SimpleJndiDstService
lsc.tasks.Administrator.dstService.baseDn = cn=Users
lsc.tasks.Administrator.dstService.filterAll = (&(cn=*)(objectClass=organizationalPerson))
lsc.tasks.Administrator.dstService.pivotAttrs = cn, top, person, user, organizationalPerson
lsc.tasks.Administrator.dstService.filterId = (&(objectClass=user) (sAMAccountName={cn}))
lsc.tasks.Administrator.dstService.attrs = description cn userPassword objectClass

lsc.tasks.Administrator.bean = org.lsc.beans.SimpleBean
lsc.tasks.Administrator.dn = "uid=" + srcBean.getAttributeValueById("uid") + ",ou=Users"

dn.real_root = dc=Domname,dc=com

############################# 
Syncoptions configuration 
#############################

lsc.syncoptions.Administrator = org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.Administrator.default.action = M
lsc.syncoptions.Administrator.objectClass.action = M
lsc.syncoptions.Administrator.objectClass.force_value = srcBean.getAttributeValueById("cn").toUpperCase()
lsc.syncoptions.Administrator.userPassword.default_value = SecurityUtils.hash(SecurityUtils.HASH_SHA1, "defaultPassword")
lsc.syncoptions.Administrator.default.delimiter=;
lsc.syncoptions.Administrator.objectClass.force_value = "top";"user";"person";"organizationalPerson"
lsc.syncoptions.Administrator.userPrincipalName.force_value = srcBean.getAttributeValueById("uid") + "@Domname.com"
lsc.syncoptions.Administrator.userAccountControl.create_value = AD.userAccountControlSet ( "0", [AD.UAC_SET_NORMAL_ACCOUNT])

Я подозреваю, что это как-то связано с baseDn конфигурации Task в части исходной конфигурации.

ОС - ubuntu 10.04 и Windows2K3.

Кто-то предложил мне сделать ручную синхронизацию между ними, но я не нашел никаких руководств для этого. И эта программа — почти единственное, что говорит о том, что она делает такую ​​работу бесплатно.


person Ben_A_135    schedule 15.05.2012    source источник


Ответы (4)


baseDn должно быть отличительным именем базового объекта поиска, например, ou=users,dc=domname,dc=com.

смотрите также

person Terry Gardner    schedule 15.05.2012
comment
Я так и сделал, и это дало совершенно другую ошибку: javax.naming.NameNotFoundException: [LDAP: код ошибки 32 — нет такого объекта]; оставшееся имя 'ou=users,dc=domname,dc=com' Пустой или несуществующий источник - person Ben_A_135; 16.05.2012
comment
Вы когда-нибудь решали это? Я сталкиваюсь с той же проблемой. Пожалуйста, дай мне знать. Спасибо. - person subodhbahl; 16.04.2013
comment
@Terry Gardner LDAP: ссылка на лучшие практики поиска не работает. Пожалуйста, обновите его. - person OO7; 09.12.2014
comment
Я решил аналогичную проблему, заставив пользователей искать cn и группировать поиск ou. Кроме того, группы ДОЛЖНЫ находиться в отдельном от пользователей контейнере. Любая другая комбинация приводит к указанной ошибке (хотя на самом деле работает нормально, просто выдает кучу ошибок в журнале). - person Brian Knoblauch; 15.07.2015

Основная причина NameNotFoundException заключается в том, что объект, который вы ищете, не существует или контейнер, в котором вы ищете, неверен .

person Anil_irocks88    schedule 25.03.2014
comment
Понятия не имею об этом понижении. Пока это правильный ответ. - person alexander; 13.07.2015
comment
Наверное, потому что не дает подсказки, как это исправить. - person not2savvy; 15.09.2020

В случае Spring-ldap мы получали эту ошибку, когда указывали baseDn в файле контекста (бин LdapContextSource), а также в коде createUser для создания userDn. Нам не нужно снова указывать DC в buildUserDn()

protected Name buildUserDn(String userName) {
   DistinguishedName dn = new DistinguishedName();

   //only cn is required as the base dn is already specified in context file

   dn.add("cn", userName); 

   return dn;
}
person Divya S    schedule 29.01.2018

В Active Directory: Users каталог — это класс container, а не OrganizationalUnit, поэтому вы должны использовать: cn=users,dc=domname,dc=com

person x0r    schedule 25.01.2018