Hi Emmanuel, After a long time. I hope you can remember me. :-)
Your previous answer was very helpful for continuing my project and achieved some milestone. Here I got the user data from LDAP entry and store those things into different types of databases like MySQL. Now I need to build a message response.When I'm going to do that I got the problem "get a message ID at the interceptor level". Here, I tried using context(eg-addContext) parameter to get the message ID. But I could not get it. I would like to know am I missed something or are there have any limitations to get the message ID at the interceptor level. Thanks Dineth. [image: dinethr.PNG] Dineth Chalitha Basnayake. Undergraduate in Computer Science & Technology, Uva Wellassa University of Sri Lanka [email protected] [image: facebook.png] <https://www.facebook.com/dineth.basnayake>[image: Linked in alt.png] <https://www.linkedin.com/in/dineth-chalitha-basnayake-a79032ba/>[image: github.png] <https://github.com/DinethUWU> On Sun, Aug 6, 2017 at 10:02 AM, Emmanuel Lécharny <[email protected]> wrote: > You are very welcome ! > > Precise questions deserve precise answers :-) > > > Le 06/08/2017 à 05:38, Dineth Chalitha Basnayaka a écrit : > > Hi ! > > > > Thank you for taking the time to help me, I really do appreciate it. This > > explanation is really helping me improve. > > > > Thanks a lot! > > > > > > > > [image: dinethr.PNG] > > > > Dineth Chalitha Basnayake. > > > > Undergraduate in Computer Science & Technology, > > > > Uva Wellassa University of Sri Lanka > > > > [email protected] > > > > [image: facebook.png] <https://www.facebook.com/dineth.basnayake>[image: > > Linked in alt.png] > > <https://www.linkedin.com/in/dineth-chalitha-basnayake-a79032ba/>[image: > > github.png] <https://github.com/DinethUWU> > > > > On Sun, Aug 6, 2017 at 7:34 AM, Emmanuel Lécharny <[email protected]> > > wrote: > > > >> Now, that's better :-) > >> > >> > >> Although &.5 and 2.0.0-M24 are very different, the interceptor > >> architecture hasn't change so much (hopefully). Ok, the doc is totally > >> otdated, and we don't use the server.xml fila anymore. > >> > >> > >> Interceptors are all extending the BaseIntercapor abstract class which > >> itself implements the Interceptor interface. There is not that much you > >> need to implement in your ow interceptor : > >> > >> - the init() method if you need to initialize some things when the > >> interceptor is added to the system (it's called once at startup) > >> > >> - the destroy() method that is called when teh server is shutdown, would > >> you need to cleanup things (AFAICT, no interceptor implements this > method) > >> > >> - and a method for each LDAP operation : add, bind, compare, delete, > >> getRootDse (SEARCH), hasEntry (SEARCH), lookup (SEARCH), modify, move > >> (MODRDN), moveAndRename(MODRDN), rename (MODRDN),search and unbind. As > >> you can see, some of those methods are a specific version of a base > >> method - like lookup/hasEntry/getRootDSE which could be done using teh > >> search method-, for convenience. > >> > >> Eachof the Operation methods use a special Context parameter, which > >> itself gives you access to various elements : > >> > >> - the specific operations parameters (like the base DN or the filter for > >> the search operation (check each of the Context classes and interfaces) > >> > >> - the Session (and here, the CoreSession). > >> > >> > >> When an LdapMessage is received, the protocol handlers passes it to the > >> CoreSession instance, which creates an operation context from it, > >> extracting all the required pieces that are going to be processed by > >> interceptors. At this point, the initial LdapMessage is not anymorz > >> available from inside interceptors, bt can be rebuilt from the content > >> of the operation context - including the controls -. > >> > >> The Session is also where you'll find information about each current > >> operation, and the executing LDAP session. Typically, it gives you > >> access to the caller's ID - the principal -, it's IP address, > >> > >> > >> Now, once you have implemented your interceptor, there are two things > >> that need to be done in the configuration : > >> > >> - each interceptor is declared in the configuration file > >> > >> - each one has an order in the chain > >> > >> - each one is either enabled or disabled > >> > >> - each interceptor is associated with a class implementing it > >> > >> > >> The order is critical, and you must add yours at the right place, > >> dependning on what you want to do. Usuammy, you want to add your > >> inteceptor at the very end of the chain, so with the highest order. The > >> order is stored in the ads-interceptororder attribute (see later for an > >> example). The class implementing the interceptor is stored using its > >> FQDN in the ads-interceptorclassname attribute. > >> > >> The interceptor will be called only if it's enabled, something that has > >> to be set using the ads-enabled attribute. > >> > >> > >> Here are two examples for two different interceptors : > >> > >> > >> - The Normalization interceptor : > >> > >> dn: > >> ads-interceptorId=normalizationInterceptor,ou=interceptors,ads- > >> directoryServiceId=default,ou=config > >> objectclass: top > >> objectclass: ads-base > >> objectclass: ads-interceptor > >> ads-interceptororder: 1 > >> ads-interceptorclassname: > >> org.apache.directory.server.core.normalization.NormalizationInterceptor > >> ads-interceptorid: normalizationInterceptor > >> ads-enabled: TRUE > >> > >> Its order is 1, it's the very first interceptor being called. The FCQN > >> (org.apache.directory.server.core.normalization. > NormalizationInterceptor) > >> for this interceptor is stored in the ads-interceptorclassname > >> attribute, and this interceptor is enabled. > >> > >> > >> - The KeyDerivation interceptor : > >> > >> dn: > >> ads-interceptorId=keyDerivationInterceptor,ou=interceptors,ads- > >> directoryServiceId=default,ou=config > >> objectclass: top > >> objectclass: ads-base > >> objectclass: ads-interceptor > >> ads-enabled: FALSE > >> ads-interceptororder: 8 > >> ads-interceptorclassname: > >> org.apache.directory.server.core.kerberos.KeyDerivationInterceptor > >> ads-interceptorid: keyDerivationInterceptor > >> > >> This interceptor is used when Kerberos is enabled, to compute the > >> derived kerberos keys when a user changes its password. > >> > >> It's position is 8, becuase it has to be executed before the > >> passwordHashing Interceptor, but here, as yu can see, it's disabled : it > >> won't be executed at all. > >> > >> > >> It's enough to set your configuration file with your interceptor for > >> this interceptor to be automaticaly called at the right place in teh > >> chain of interceptors : the server uses reflection at startup to know > >> where to set it - if it's enabled - and for which operation it will be > >> called (if you don't have a delete() method in your interceptor, for > >> instance it will never be called when a user sends a Delete operation to > >> the server). The configuratio is processed at startup, btw, so you'll > >> need to restart the server if you change the configuration. > >> > >> > >> I hope it helps. > >> > >> > >> > >> Le 05/08/2017 à 20:19, Dineth Chalitha Basnayaka a écrit : > >>> Hi ! > >>> > >>> I am very new to apacheDS so forgive me if I am interrupting you. I > tried > >>> with tutorial "Implementing a simple custom Interceptor for ApacheDS" ( > >>> http://directory.apache.org/apacheds/advanced-ug/6- > >> implementing-interceptor.html) > >>> . It was nice explanation and it work for me. But it related > >> apcheds-1.5.5. > >>> When its come to apacheds2.0.0-M24 I saw > >>> org.apache.directory.server.core.hash.PasswordHashingInterceptor and > >> more > >>> default interceptors are already implement there. > >>> So now I'am trying to implementing my own interceptor. In order to get > >> the > >>> interceptor installed in a default installation of ApacheDS2.0.0-M24 > >> little > >>> bit confused me. Because there have some different with > >> ApacheDS2.0.0-M24 > >>> and apcheds-1.5.5 installation layouts.In ApacheDs2.0.0-M24 > installation > >>> layout not showing the server.xml file. If you can give some > information > >> to > >>> install new Custom interceptors to apacheDS.2.0.0-M24 Its really > helpful > >>> for me. > >>> > >>> Thanks for your consideration. > >>> > >>> > >>> > >>> > >>> [image: dinethr.PNG] > >>> > >>> Dineth Chalitha Basnayake. > >>> > >>> Undergraduate in Computer Science & Technology, > >>> > >>> Uva Wellassa University of Sri Lanka > >>> > >>> [email protected] > >>> > >>> [image: facebook.png] <https://www.facebook.com/dineth.basnayake > >[image: > >>> Linked in alt.png] > >>> <https://www.linkedin.com/in/dineth-chalitha-basnayake-a79032ba/ > >[image: > >>> github.png] <https://github.com/DinethUWU> > >>> > >>> On Fri, Aug 4, 2017 at 10:22 AM, Emmanuel Lécharny < > [email protected]> > >>> wrote: > >>> > >>>> Le 04/08/2017 à 05:32, Dineth Chalitha Basnayaka a écrit : > >>>>> Can you give what are the possible places in ldap server I can access > >>>> that > >>>>> message. > >>>> http://www.catb.org/esr/faqs/smart-questions.html#explicit > >>>> > >>>> In other word, ApacheDS is a 200 000 lines of code project. Im not > going > >>>> to go throught it to show you how to get the information you need, it > >>>> would simply take me days. Either you tell me where in the code you > want > >>>> to access LDAPMessage, or you are totally on your own. > >>>> > >>>> > >>>> Thanks. > >>>> > >> -- > >> Emmanuel Lecharny > >> > >> Symas.com > >> directory.apache.org > >> > >> > > -- > Emmanuel Lecharny > > Symas.com > directory.apache.org > >
