diff --git a/core/src/main/java/org/acegisecurity/providers/jaas/JaasNameCallbackHandler.java b/core/src/main/java/org/acegisecurity/providers/jaas/JaasNameCallbackHandler.java index 46ca6df94c..fec990aa07 100644 --- a/core/src/main/java/org/acegisecurity/providers/jaas/JaasNameCallbackHandler.java +++ b/core/src/main/java/org/acegisecurity/providers/jaas/JaasNameCallbackHandler.java @@ -16,6 +16,7 @@ package net.sf.acegisecurity.providers.jaas; import net.sf.acegisecurity.Authentication; +import net.sf.acegisecurity.UserDetails; import java.io.IOException; @@ -54,10 +55,21 @@ public class JaasNameCallbackHandler * @throws UnsupportedCallbackException */ public void handle(Callback callback, Authentication authentication) - throws IOException, UnsupportedCallbackException { + throws IOException, UnsupportedCallbackException { + if (callback instanceof NameCallback) { + NameCallback ncb = (NameCallback) callback; - ncb.setName(authentication.getPrincipal().toString()); + String username = ""; + + Object principal = authentication.getPrincipal(); + if (principal instanceof UserDetails) { + username = ((UserDetails) principal).getUsername(); + } else { + username = principal.toString(); + } + + ncb.setName(username); } } }