Spring LdapTemplate を介して LDAP エントリをバインド解除するにはどうすればよいですか?
LDAP エントリ uid=johnsmith@example.com,objectClass=posixAccount があります。問題があるかどうかはわかりませんが、johnsmith@example.com も group1 のメンバーです。
com
|
+--example (dc=example,objectClass=organization)
|
+--groups (ou=groups,objectClass=organizationUnit)
| |
| +--group1 (cn=group1,objectClass=groupOfNames)
| +--group2 (cn=group2,objectClass=groupOfNames)
|
+--people (ou=people,objectClass=organizationUnit)
|
+--johnsmith@example.com (uid=johnsmith@example.com,objectClass=posixAccount)
+--janesmith@example.com (uid=janesmith@example.com,objectClass=posixAccount)
これまでに試したこと:
Name dn = new DistinguishedName();
dn.add("ou", "people");
dn.add("uid", "johnsmith@example.com");
ldapTemplate.unbind(dn);
ただし、例外がスローされなくても、LDAP エントリは削除されません。
再帰的なアンバインドも試しました:
Name dn = new DistinguishedName();
dn.add("ou", "people");
dn.add("uid", "johnsmith@example.com");
ldapTemplate.unbind(dn, true);
しかし、次のエラーが表示されます。
Exception occurred in target VM: [LDAP: error code 32 - No Such Object]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'uid=johnsmith@example.com,ou=people' org.springframework.ldap.NameNotFoundException: [LDAP: error code 32 - No Such Object]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'uid=johnsmith@example.com,ou=people'
at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:174)
at org.springframework.ldap.core.LdapTemplate.deleteRecursively(LdapTemplate.java:1122)
at org.springframework.ldap.core.LdapTemplate$25.executeWithContext(LdapTemplate.java:1083)
at org.springframework.ldap.core.LdapTemplate.executeWithContext(LdapTemplate.java:807)
at org.springframework.ldap.core.LdapTemplate.executeReadWrite(LdapTemplate.java:802)
at org.springframework.ldap.core.LdapTemplate.doUnbindRecursively(LdapTemplate.java:1081)
at org.springframework.ldap.core.LdapTemplate.unbind(LdapTemplate.java:1044)
(etc....)
編集:問題が見つかりました。uid にタイプミスがあったため、バインド解除で LDAP エントリが削除されませんでした...