我们在 IBM WebSphere Application Server 中部署了 Java Web API。我们还有一个每隔 10 分钟运行一次的轮询器作业。该作业的目的是检查 LDAP 中具有 UnsignedUsers 的条目并删除这些条目。
以下是轮询器作业的代码:
public void updateUser(final String username) {
DistinguishedName distinguishedName = new DistinguishedName();
distinguishedName.add("-ou", "-Roles");
distinguishedName.add("-cn", "-UnassignedUsers");
ModificationItem[] modificationItems = new ModificationItem[1];
modificationItems[0] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE,new BasicAttribute("member", "cn="+ userName+",ou=ExternalUsers,OU=FINAL-DEV,OU=People,DC=FINALDEV,DC=dev,DC=FD,DC=FG"));
try {
ldapTemplate.modifyAttributes(distinguishedName, modificationItems);
} catch(Exception e) {
//...
}
}
以下是服务器上的 LDAP 配置
java.naming.factory.initial = com.sun.jndi.ldap.LdapCtxFactory
java.naming.security.principal = CN=SD-FINAL-ADSvc,OU=DOR,OU=ServiceAccounts,OU=AA,DC=FINALDEV,DC=dev,DC=FD,DC=FG
java.naming.ldap.version = 3
java.naming.ldap.derefAliases = never
java.naming.provider.url = ldaps://finaldev.dev.fd.fg:636/ou=FINAL-DEV,ou=People,dc=FINALDEV,dc=dev,dc=fd,dc=fg
java.naming.factory.url.pkgs = com.ibm.ws.naming:com.ibm.osgi.jndi.fep:com.ibm.ws.runtime:com.ibm.wps.jndi:com.ibm.ws.naming
java.naming.factory.object = org.springframework.ldap.core.support.DefaultDirObjectFactory
com.sun.jndi.ldap.connect.pool = true
org.springframework.ldap.base.path = ou=FINAL-DEV, ou=People, dc=FINALDEV, dc=dev, dc=fd, dc=fg
代码
ldapTemplate.modifyAttributes(distinguishedName, modificationItems);
给出以下错误
LDAP: error code 32 - 0000208D: NameErr: DSID-0310028D, problem 2001 (NO_OBJECT), data 0, best match of: 'OU=FINAL-DEV,OU=People,DC=FINALDEV,DC=dev,DC=fd,DC=fg' ];
nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310028D, problem 2001 (NO_OBJECT), data 0,
best match of: 'OU=FINAL-DEV,OU=People,DC=FINALDEV,DC=dev,DC=fd,DC=fg' ]; remaining name 'cn=UnassignedUsers, ou=Roles'
我尝试在网上搜索,但没有找到任何解决方案。非常感谢任何针对问题或可能出现的问题的指示。