Hi guys,

I'm currently dealing with this attribute while integrating the new ServerEntry API. In the previous versions of the server, it was considered as a String AND as a byte[] (a very quantic attribute... When you look at it, it destroys the other possible type :)

Now, I have to be much more strict about such an attribute. It has to be String or byte[], but not both. Accordingly to RFC 4511 :

       BindRequest ::= [APPLICATION 0] SEQUENCE {
            version                 INTEGER (1 ..  127),
            name                    LDAPDN,
            authentication          AuthenticationChoice }

       AuthenticationChoice ::= CHOICE {
            simple                  [0] OCTET STRING,
            ...

Here, the credentials is considered to be a byte[], and nothing else. The credential is compared to the userPassword attribute stored on the server, and this comparison is done using byte[] comparison.

Now, what makes userPassword very special is that users usually type their password using their keybord, limitating the password to key chars (it's pretty hard to generate a \0 on a keyboard). So the request usually comes with a textual userPassword. The very same for search requests, where filters contains Strings, and not byte[].However, the normalizer interceptor transform a String value into a byte[] in this case.

That being said, there are many places in the code (and mainly in tests), where we compare the password as if it was a String. I think it's a mistake. I may change this, but I wanted to know if some of you have some provision against such a major change (159 references to "userPassord " all over the code !)

so, WDYT ?

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


Reply via email to