Próbuję skopiować układ/schemat LDAP z pola, z którym ma do czynienia moja aplikacja - i próbuję odtworzyć + przetestuj go za pomocą automatycznego testu z wbudowanym serwerem LDAP UnboundID.Tworzenie niestandardowego schematu/dodawanie do istniejącego schematu dla serwera LDAP w ramach operacji UnboundID
Sytuacja, z którą musi sobie poradzić, to właściwość "memberOf" użytkownika, taka jak Active Directory ... ale nie jestem do końca pewien, jak dodać klasę "użytkownika" do tego ldap w pamięci.
1) Czy to możliwe? 2) Czy istnieje lepsza strategia? 3) A co konkretnie powinienem zrobić? Jestem nowicjuszem LDAP.
Poniżej znajduje się mój kod niepracujący.
Dzięki, Mike Kohout
public class TestOpenLdap2
{
private InMemoryDirectoryServer server;
@Before
public void start() throws Exception
{
InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig("dc=com");
config.addAdditionalBindCredentials("cn=admin,ou=People,dc=example,dc=com", "cred");
InMemoryListenerConfig listenerConfig = new InMemoryListenerConfig("test", null, 33390, null, null, null);
config.setListenerConfigs(listenerConfig);
server = new InMemoryDirectoryServer(config);
server.startListening();
}
@Test
public void testMemberOf() throws Exception
{
addEntry("dn: dc=com", "objectClass: top", "objectClass: domain", "dc: com");
ObjectClassDefinition oc = new ObjectClassDefinition("10.19.19.78", new String[]{"user"}, "", false, new String[]{"TOP"},
ObjectClassType.STRUCTURAL, new String[]{"memberOf"},
new String[]{}, new HashMap());
addEntry("dn: cn=schema2,dc=com", "objectClass: top", "objectClass: ldapSubEntry", "objectClass: subschema", "cn: schema2",
"objectClasses: " + oc.toString());
addEntry("dn: dc=people,dc=com", "objectClass: top", "objectClass: domain", "dc: people");
addEntry("dn: dc=groups,dc=com", "objectClass: top", "objectClass: domain", "dc: groups");
addEntry("dn: cn=test-group,dc=groups,dc=com", "objectClass: groupOfUniqueNames", "cn: test group");
addEntry("dn: cn=Testy Tester,dc=people,dc=com", "objectClass: Person", "objectClass: user", "objectClass: organizationalPerson", "sn: Tester", "cn: Testy Tester", "memberOf: cn=test-group,dc=groups,dc=com");
}
public void addEntry(String... args) throws LDIFException, LDAPException
{
LDAPResult result = server.add(args);
assert (result.getResultCode().intValue() == 0);
System.out.println("added entry:" + Arrays.asList(args));
}
Otrzymuję 'Nie można dodać pozycji z DN, który jest taki sam lub podrzędny do podcięcia DN cewka = subshema DN 'cn = schema'' błąd, gdy próbuję to, sdk v.2.3.4 – SelimOber