### Eclipse Workspace Patch 1.0
#P JSPWiki
Index: src/com/ecyrd/jspwiki/auth/AuthenticationManager.java
===================================================================
--- src/com/ecyrd/jspwiki/auth/AuthenticationManager.java	(revision 728928)
+++ src/com/ecyrd/jspwiki/auth/AuthenticationManager.java	(working copy)
@@ -554,9 +554,16 @@
                 commitSucceeded = loginModule.commit();
             }
         }
-        catch (LoginException e)
+        catch( LoginException e )
         {
-            // Login or commit failed! No principal for you!
+            if( loginModule instanceof AbstractLoginModule )
+            {
+                // Login or commit failed! No principal for you!
+            }
+            else
+            {
+                throw new WikiSecurityException( e.toString() );
+            }
         }
 
         // If we successfully logged in & committed, return all the principals
Index: src/com/ecyrd/jspwiki/auth/login/WikiCallbackHandler.java
===================================================================
--- src/com/ecyrd/jspwiki/auth/login/WikiCallbackHandler.java	(revision 728928)
+++ src/com/ecyrd/jspwiki/auth/login/WikiCallbackHandler.java	(working copy)
@@ -22,13 +22,12 @@
 
 import java.io.IOException;
 
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.security.auth.callback.*;
 
+import com.ecyrd.jspwiki.WikiSession;
 import com.ecyrd.jspwiki.auth.user.UserDatabase;
+import com.ecyrd.jspwiki.log.Logger;
+import com.ecyrd.jspwiki.log.LoggerFactory;
 
 /**
  * Handles logins made from inside the wiki application, rather than via the web
@@ -42,6 +41,8 @@
  */
 public class WikiCallbackHandler implements CallbackHandler
 {
+    private static final Logger log = LoggerFactory.getLogger(WikiCallbackHandler.class);
+
     private final UserDatabase m_database;
 
     private final String       m_password;
@@ -84,6 +85,18 @@
             {
                 ( (PasswordCallback) callback ).setPassword( m_password.toCharArray() );
             }
+            else if( callbacks[i] instanceof TextOutputCallback )
+            {
+                TextOutputCallback textOutputCb = (TextOutputCallback) callbacks[i];
+                String loginResult = textOutputCb.getMessage();
+                if(  textOutputCb.getMessageType() == TextOutputCallback.ERROR )
+                {
+                    log.error( loginResult );
+                    throw new IOException( loginResult );
+                }
+
+                log.info( loginResult );
+            }
             else
             {
                 throw new UnsupportedCallbackException( callback );
Index: etc/i18n/CoreResources.properties
===================================================================
--- etc/i18n/CoreResources.properties	(revision 729832)
+++ etc/i18n/CoreResources.properties	(working copy)
@@ -60,6 +60,7 @@
 #login.error.capslock=Invalid login (please check your Caps Lock key) #obsolete
 login.error.password=Not a valid login.
 login.error.noaccess=It seems you don't have access to that. Sorry.
+login.error=Login failed: {2}
 
 # Lostpassword.jsp
 
