What database are you using ?  Not every database support encoding.

"(Jay) Jun Yan" <[EMAIL PROTECTED]> wrote:  Hi,

I found that JetSpeed does not support UTF-8 encoded usernames. If you login
as an admin and create a user with name in East Asian language, or with
other non-regular letters, like "รค" (alt+132), you can do it. But if you
type that new name in the login page, you would get a "Wrong user name"
error message, with the name screwed on UI.

The name can be kept if you add
        request.setCharacterEncoding("UTF-8");
at the beginning of org.apache.jetspeed.login.LoginProxyServlet.goGet. But
you still won't be able to login, because this piece of code.

            Callback[] callbacks = new Callback[] { new
NameCallback("Username: "), new PasswordCallback("Password: ", false) };
            callbackHandler.handle(callbacks);
            username = ((NameCallback) callbacks[0]).getName();

I assume that's how people get the user name. If the username typed in was
UTF-8 encoded, here the username is wrong already.

The logic which causes this problem, which seems to me, is the
callbackHandler, which is an instance of
javax.security.auth.login.LoginContext.SecureCallbackHandler

I guess that's something out of our control.

I heard a workaround to get the bytes from the screwed username above, and
use those bytes to reconstruct a string UTF-8 encoded. But I am afraid that
in the future if this issue is fixed by javax..., I would double encode it.

Anybody has any ideas/suggestions?

Thanks,

Jay
-- 
(Jay) Jun Yan


                
---------------------------------
Yahoo! Music Unlimited - Access over 1 million songs.Try it free. 

Reply via email to