keycloak-aplcache

Merge pull request #1001 from pedroigor/master [KEYCLOAK-883]

2/26/2015 3:27:56 PM

Details

diff --git a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
index b2a11bb..5f9501e 100644
--- a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
+++ b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
@@ -323,7 +323,7 @@ public class IdentityBrokerService {
                     federatedUser.addRequiredAction(UPDATE_PROFILE);
                 }
             } catch (Exception e) {
-                return redirectToErrorPage(e.getMessage(), e);
+                return redirectToLoginPage(e, clientCode);
             }
         }
 
@@ -447,6 +447,20 @@ public class IdentityBrokerService {
         return Flows.forwardToSecurityFailurePage(this.session, this.realmModel, this.uriInfo, message);
     }
 
+    private Response redirectToLoginPage(Throwable t, ClientSessionCode clientCode) {
+        String message = t.getMessage();
+
+        if (message == null) {
+            message = "Unexpected error when authenticating with identity provider";
+        }
+
+        fireErrorEvent(message);
+        return Flows.forms(this.session, this.realmModel, clientCode.getClientSession().getClient(), this.uriInfo)
+                .setClientSessionCode(clientCode.getCode())
+                .setError(message)
+                .createLogin();
+    }
+
     private Response badRequest(String message) {
         fireErrorEvent(message);
         return Flows.errors().error(message, Status.BAD_REQUEST);