Получение атрибутов группы для имени группы со специальными символами в Active Directory - PullRequest
1 голос
/ 15 марта 2012

У меня есть имя группы, которое содержит специальные символы.

CN=IN&T DC Gebnn/Dohn,OU=ABGroups,OU=Hammers,DC=MyCompany,DC=int

Я пытаюсь получить атрибуты этой группы, используя следующий код:

String lstrFullGpName = CN=IN&T DC Gebnn/Dohn,OU=ABGroups,OU=Hammers,DC=MyCompany,DC=int;
Attributes groupAttributes = actxDir.getAttributes(lstrFullGpName);

Это выдает следующую ошибку:

Исключение в потоке "main" javax.naming.NamingException: [LDAP: ошибка код 1 - 000020D6: SvcErr: DSID-031006CC, проблема 5012 (DIR_ERROR), данные 0]; оставшееся имя 'CN = IN & T DC Gebnn / Dohn, OU = ABGroups, OU = молотки, DC = MyCompany, DC = INT '
в com.sun.jndi.ldap.LdapCtx.mapErrorCode (LdapCtx.java:3081)
в com.sun.jndi.ldap.LdapCtx.processReturnCode (LdapCtx.java:2987)
в com.sun.jndi.ldap.LdapCtx.processReturnCode (LdapCtx.java:2794)
на com.sun.jndi.ldap.LdapCtx.c_lookup (LdapCtx.java:1011)
в com.sun.jndi.toolkit.ctx.ComponentContext.c_resolveIntermediate_nns (ComponentContext.java:152)
в com.sun.jndi.toolkit.ctx.AtomicContext.c_resolveIntermediate_nns (AtomicContext.java:342)
в com.sun.jndi.toolkit.ctx.ComponentContext.p_resolveIntermediate (ComponentContext.java:381)
в com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes (ComponentDirContext.java:205)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes (PartialCompositeDirContext.java:121)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes (PartialCompositeDirContext.java:109)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes (PartialCompositeDirContext.java:99)
в LDAPApp.main (LDAPApp.java:68)

Я пытался экранировать специальные символы, но это не сработало. Любая идея, почему эта ошибка может происходить?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2015

Это известное ограничение JNDI:

"Если имя записи LDAP содержит [прямую косую черту], вам необходимо ее избежать (используя символ обратной косой черты ('\'))."

http://docs.oracle.com/javase/tutorial/jndi/ldap/jndi.html

Т.е. вместо Java String "/", необходимо использовать "\\/" в константах String, соответственноescape-строки, подобные этой

distinguishedName = distinguishedName.replace("/", "\\/")
0 голосов
/ 27 марта 2012

Мне наконец удалось найти решение этой проблемы. Проблемы были с DC в имени пользователя.

...