Hello again,

I tried to use an embedded Apache DS with a self written interceptor as (kind of) a proxy. Actually I have to "parse" incoming requests to request the desired data from a database. However I'm struggling doing so.

1) I do not get the complete request if parsing the request, for example when requesting
"(&(objectClass=smpki)(cn=ABC))"
and using the SearchContext in
@Override
public EntryFilteringCursor search(SearchOperationContext searchContext) { ... } I get the DN "ou=certificates,dc=smpki" by searchContext.getDn(). However I do not manage to get the searchfilter from the request (I checked the RequestControls and ResponseControls of the SearchContext) and do not havy any idea what to do next. Can someone please provide any hint on how to get the search filter?

2) I simply started the embedded server using the following code (some unimportant lines adding my self-written interceptor omitted):

DefaultDirectoryServiceFactory factory = new DefaultDirectoryServiceFactory();
        factory.init(INSTANCE_NAME);
        this.directoryService = factory.getDirectoryService();
        this.directoryService.getChangeLog().setEnabled(false);
        this.directoryService.setShutdownHookEnabled(true);
        InstanceLayout il = new InstanceLayout(INSTANCE_PATH);
        this.directoryService.setInstanceLayout(il);

        this.ldapService = new LdapServer();
this.ldapService.setTransports(new TcpTransport(this.host, this.port));
        this.ldapService.setDirectoryService(this.directoryService);

When I let the JUnit test run my interceptor is invoked as expected. However I got the following exception:

javax.naming.NamingException: [LDAP: error code 80 - OTHER: failed for MessageType : SEARCH_REQUEST
Message ID : 2
    SearchRequest
        baseDn : 'ou=certificates,dc=smpki'
filter : '(&(objectClass=smpki)(cn=033e07c49e8af56994859466bebfaa9057a36924))'
        scope : whole subtree
        typesOnly : false
        Size Limit : no limit
        Time Limit : no limit
        Deref Aliases : deref Always
        attributes :
org.apache.directory.api.ldap.model.message.SearchRequestImpl@4f08934e ManageDsaITImpl Control
        Type OID    : '2.16.840.1.113730.3.4.2'
        Criticality : 'false'
'
: null]; remaining name 'ou=certificates,dc=smpki'
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3111)
....

Is this a problem with the configuration of the embedded Apache DS? Doch I need an instance layout which conforms to the request?

With regards
Sebastian

Reply via email to