GSoC proposal
Subject |
Develop a LDAP proxy GUI |
Subject ID |
directory-proxy |
Author |
Kirill Kosinov |
Project Title
Eclipse plugin which will expose the LDAP messages.
Project description
The main aim of this project to create a plugin for Apache Directory Studio, which will expose requests being a client and a LDAP server, store them and replay them.
Project details
Apache directory studio is the best open source RCP Application, which contains schemaeditor, ldapbrowser, ldifeditor and other components for comfortable work with LDAP server. In the project Eclipse-LDAP-Proxy i'll create another RCP plugin which will be useful tool for debugging applications which interact with LDAP servers.
Plugin perspective will contain 4 components:
- Request message view. Tags of ldap request messsages will be written to log and grouped by message id.
i.e. if we have input message in byte form: 0x02, 0x01, 0x01, 0x60, 0x16, 0x02, 0x01, 0x03, 0x04, 0x09, 0x63, 0x6E, 0x3D, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64, (byte)0x80, 0x06, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64. Request message view will contain following information:
msgId |
msgData |
1 |
0x02, 0x01, 0x01 |
1 |
0x60 |
1 |
0x16 |
1 |
0x02, 0x01, 0x03 |
1 |
0x04, 0x09, 0x63, 0x6E, 0x3D, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64 |
1 |
(byte)0x80, 0x06, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64 |
- Response view will be represented in byte form.
- Message detail view will contain decoded message in form:
ASN.1 |
data |
TLV |
messageId |
0x02, 0x01, 0x01 |
Integer, length - 1, value -1 |
operation |
0x60 |
bind_request |
PDU length |
0x16 |
|
version |
0x02, 0x01, 0x03 |
Integer, length - 1, value -3 |
ldapDN |
0x04, 0x09, 0x63, 0x6E, 0x3D, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64 |
OCTET STRING, length - 9 |
simple Auth type |
(byte)0x80, 0x06, 0x70, 0x72, 0x65, 0x76, 0x65, 0x64 |
length - 6 |
- Editor for user LDAP messages accepts input in three different formats: binary (a raw list of bytes), TLV (type-length-value), LDAP message.
Editors and log viewer allows saving of requests and server responses. I'm familiar with RFC 2251 and ASN.1 notation for user-readable view of messages i plan to use LdapMessage and LdapDecoder classes from org.apache.directory.shared.ldap.codec package.
Plugin configuration
The proxy will be between the client and server. User set up proxy incoming port, than one of saved LDAP connection will be selected to hit the server.
Main features
- to get LDAP messages from client to server and from server to client in binary and decoded forms.
- to replay LDAP messages without the client, by using editor. User input can be in one of three forms: binary, TVL, LDAP message;
- to save message logs.
Development Schedule
April 20 - May 20
Studding of shared codec from org.apache.directory.shared.ldap.codec package, adopting it to goals of project. Studding of RFC 2251 and connected.
May 21 - June 1
Plugin configuration tasks.
June 1 - June 14
Implementation of binary logs of request and response.
June 15 - June 20
Implementation of detailed view.
June 20 - July 6
User input requests in binary form.
July 6 - 10 August
TLV, LDAP message user input.
11 August - 17 August
Testing period for directory-proxy.
Deliverables
- Source code in maven project with pom to build.
- Related documentation.
- Related unit tests.
Why directory project?
During my education i participated in a project based on apache mina where we try to wrap some data from RDBMS into LDAP entities. We spend a lot of time for testing our LDAP server. Directory-proxy project can simplify tasks of testing application which use LDAP servers, or for testing LDAP servers.
About me
I am a student of Kursk State University, also i worked as a Java developer for two years. During my work i participated in two web projects (www.appek.org, b4u.whiteants.net) and many desktop projects, i also fulfilled all requirements for SCJP exam, so i have approved base knowledge of Java. Now i am preparing to scbcd exam. I like Java because it is a very flexible platform and it gives an opportunity to develop application using modern technologies of programming (unit testing, soa). Java code can be well described with UML, during my work i understood, that timeline and good documentation is a half of success.