Jeff MAURY wrote:
Hello,
Hi,
I may need in the near future a SOAP DSML gateway on top of ADS. So, before
developing it standalone, I would prefer work for the community and
therefore, I am interested about the ADS people remarks.
So please read my general design ideas and questions about it.

1) Web service stack
The standard way of developing Web Service in J2EE is to use JAX-WS
annotations. However, this JCP has a major drawback in my opinion: it does
not address the deployment phase, so there is no way to build a WAR file
that can be deployed to any J2EE container, each implementation will have
its own way of declaring the Web Services. So we have two choices:
  - build an incomplete WAR and let's the user complete the task (not my
prefered given the complexity of J2EE)
  - use a specific open source WS stack like Axis2, CXF or Spring WS to
build the WAR. The pro of this solution is that we just need to deploy the
WAR file, the con is that is will not use the WS stack of the target J2EE
container.
Not really my favorite field, I will let others comment about such a choice.
2) Interface for ADS
Even if the first implementation will use LDAP to communicate with ADS, I
think we should address the case where the gateway will be embedded into ADS
(with Jetty, I've heard the work is planned to already started). So my
question is: is there an internal API inside ADS that allows direct calls
between a client and ADS ?
You have three possibilities :
1) develop your solution on top of JNDI, and communicate with a remote LDAP server. There are obvious problems with this approach, one of them is that you can't transmit a MessageId using JNDI. 2) develop your solution on top of JNDI, but using the JNDI layer we have developped. The big difference with solution #1 is that you don't anymore communicate with ADS through the network. The problems remain the same than with sol. #1 3) We have a brand new API which is wrapped on top of ADS, but it may need to be polished. (this is the main drawback). But the biggest advantage is that you can't be closer to the Ldap semantic.

I think that sol. #3 should be favored, even if it requires to tweak the current code to get a better API.

FYI, ADS 1.5.5 will contain Jetty embedded, but it might be a good idea to define a solution which is not tight to jetty. We should deploy a war, whatever servlet engine we use. The idea behind Jetty embedding is to offer a convenient all-in-one solution for users.
3) There is still an issue with the authentication: the DSML has an
Authentication element but it does not store the credentials, only the
identification of the user. So my recommandation is to extract the missing
information from the communication: password is basic authentication has
been done, certificate if Client SSL has been used,.... I have seen that a
DSML parser exists in the Studio, I think I can reuse it with some small
modifications.
DSML does not deal with authentication. It has to be done at the upper layer, when the user establishes the connection. The biggest problem is that WebService are basically a connectionless mode, when Ldap is a connected protocol. Nothing new for those used to deal with HTTP, but that mean some session management on the proxy. Assuming that a user first authenticate himself on the WebServer, we will have to reuse this authentication to log on the server.

But this is a very first rough suggestion, it has to be refined in order to implement the correct solution. At this point, a working prototype might help.
Any remarks ?

Jeff MAURY



--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to