I am using Apache DS M18 Version. I have just updated from M10 release. I have observed a problem in your implementation w.r.t Authentication Interceptors. I am trying to add another authenticator, that basically uses a backend database to perform authentication. I have written an authentication interceptor, which is getting registered in the AuthenticationInterceptor class. 

The problem appears when you are setting the directoryService to each authenticator. When there are multiple Authenticators with the a common type example SIMPLE, then the following method

register( Authenticator authenticator, DirectoryService directoryService ) throws LdapException

adds only the first Authenticator to the 

authenticators field

During the next iteration when you are setting the DirectoryService to the AuthenticaionInterceptors in the method

init( DirectoryService directoryService ) throws LdapException

you are reading just the authenticators in the authenticators field. This results in some of the AuthenticationInterceptors missing the directoryService variable, which is very important for Querying from LDAP.