On 2/11/10 7:59 PM, Stefan Seelmann wrote:
Emmanuel Lecharny wrote:
In any case, the password is an Octet String, ie a byte[]. The user
is always a DN when doing a simple bind.
At least to Active Directory you can bind with a username like
u...@domain. So the API should allow a non-DN user.
Bloody M$ !!! Yeah, you are right. Then the bind( String, String/byte[])
should not check that the user is a valid DN.
Some last consideration : if we are to support asynchronous
operations, then we need to make this explicit.
I suggest we keep it simple from the user pov, considering that :
- users will mainly do synchronous operations
- anonymous bind must be easy to code
what if the user forgets to call a "bind" method but just calls
another operation? Should we check that at the client? Should we do an
implicit anyonymous bind?
This is perfectly valid. You can do a straight search() without having
done a previous bind() : the server should assume that it's an anonymous
bind.
- we want to make it explicit that the async mode is used
- and we don't want zillion of methods.
So every method bind(...) will have a equivalent async method
bindAsync(), the anonymous bind will be a bind() method without
parameters, the password can be either a String or a byte[], and the
user can be either a String or a DN :
synchronous :
* bind() anonymous bind
* bind( String userDN, String password ): simple bind (if the
password is null, this will be the unauthenticated bind)
* bind( String userDN, String password )
* bind( DN userDN, String password )
* bind( String userDN, byte[] password )
* bind( DN userDN, byte[] password )
* bind( BindRequest )
I'm not sure if we really need the variants with a byte[] password.
The user has to type in the password somewhere, so in most cases the
password is a string. If the user really wants to do it s/he must use
a BindRequest.
That's an option, sure. In some case, the password can also be a binary
value the user won't type (like with fingerprints, for instance). You
have so many cool devices out there those days !!!
asynchronous :
* bindAsync() anonymous bind
* bindAsync( String userDN, String password ): simple bind (if the
password is null, this will be the unauthenticated bind)
* bindAsync( String userDN, String password )
* bindAsync( DN userDN, String password )
* bindAsync( String userDN, byte[] password )
* bindAsync( DN userDN, byte[] password )
* bindAsync( BindRequest )
Is there some handle returned by the async methods?
Yes, you get back a Future.
--
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com