I'm using an open ldap database for LDAPUserManagement.
The userPassword store in the ldap database is SHA.

I've *replaced* the Unix.crypt() method that's currently in
jetspeed-1.4/1.5 services/security/ldap/LDAPUserManagement with the
following:

-------
public String encryptPassword( String password )
         throws JetspeedSecurityException
{
......
// passwordsAlgorithm = SHA
MessageDigest md = MessageDigest.getInstance(passwordsAlgorithm);
byte[] digest = md.digest(password.getBytes("UTF-8"));
ByteArrayOutputStream bas = new ByteArrayOutputStream(digest.length +
digest.length / 3 + 1);
OutputStream encodedStream = MimeUtility.encode(bas, "base64");
encodedStream.write(digest);
return bas.toString();
}
--------

passwordsMatch() calls encryptPassword() and is returned an encrypted
string from the user suppliedPassword (gathered during the login process).

user.getPassword() is retrieved from the ldap database and substringed
to remove the passwordsSuffix {SHA}.

However, when suppliedPassword is encrypted during encryptPassword() the
return value is *truncated*. The result is that
user.getPassword.equal(encrypted) returns false failing the login process.

Here's the DEBUG:

ERROR LDAPUserManagement - DEBUG: passwordsMatch():
userPassword [from ldap]:         mr6iBOhZVdzyIoZkBjTMpT1qyf8=
encrypted [from encryptPassword]: mr6iBOhZVdzyIoZkBjTMpT1q
suppliedPassword :jetspeed

Any clues to my problem?

Thanx in advance,

johnmac


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to