keycloak-uncached

Details

diff --git a/services/src/main/java/org/keycloak/services/resources/flows/FormFlows.java b/services/src/main/java/org/keycloak/services/resources/flows/FormFlows.java
index 2059409..f55b7fb 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/FormFlows.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/FormFlows.java
@@ -105,7 +105,7 @@ public class FormFlows {
         return forwardToForm(Pages.ACCOUNT);
     }
 
-    private Response forwardToForm(String template, FormService.FormServiceDataBean formDataBean) {
+    private Response forwardToForm(String template, FormService.FormServiceDataBean formDataBean, Response.Status status) {
 
         // Getting URI needed by form processing service
         ResteasyUriInfo uriInfo = request.getUri();
@@ -142,10 +142,10 @@ public class FormFlows {
         while (itr.hasNext()) {
             FormService provider = itr.next();
             if (provider.getId().equals("FormServiceId"))
-                return Response.status(200).type(MediaType.TEXT_HTML).entity(provider.process(template, formDataBean)).build();
+                return Response.status(status).type(MediaType.TEXT_HTML).entity(provider.process(template, formDataBean)).build();
         }
 
-        return Response.status(200).entity("form provider not found").build();
+        return Response.status(status).entity("form provider not found").build();
     }
 
     public Response forwardToForm(String template) {
@@ -153,7 +153,15 @@ public class FormFlows {
         FormService.FormServiceDataBean formDataBean = new FormService.FormServiceDataBean(realm, userModel, formData, queryParams, message);
         formDataBean.setMessageType(messageType);
 
-        return forwardToForm(template, formDataBean);
+        return forwardToForm(template, formDataBean, Response.Status.OK);
+    }
+
+    public Response forwardToForm(String template, Response.Status status) {
+
+        FormService.FormServiceDataBean formDataBean = new FormService.FormServiceDataBean(realm, userModel, formData, queryParams, message);
+        formDataBean.setMessageType(messageType);
+
+        return forwardToForm(template, formDataBean, status);
     }
 
     private Response forwardToActionForm(String template, String warningSummary) {
@@ -201,7 +209,7 @@ public class FormFlows {
     }
 
     public Response forwardToErrorPage() {
-        return forwardToForm(Pages.ERROR);
+        return forwardToForm(Pages.ERROR, Response.Status.INTERNAL_SERVER_ERROR);
     }
 
     public Response forwardToOAuthGrant(){
@@ -214,7 +222,7 @@ public class FormFlows {
         formDataBean.setOAuthCode((String)request.getAttribute("code"));
         formDataBean.setOAuthAction((String)request.getAttribute("action"));
 
-        return forwardToForm(Pages.OAUTH_GRANT, formDataBean);
+        return forwardToForm(Pages.OAUTH_GRANT, formDataBean, Response.Status.OK);
     }
 
     public FormFlows setAccessCode(AccessCodeEntry accessCode) {
diff --git a/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java b/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
index 2b9526c..9ce4f94 100755
--- a/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
+++ b/services/src/main/java/org/keycloak/services/resources/RequiredActionsService.java
@@ -90,7 +90,7 @@ public class RequiredActionsService {
     public Response updateProfile(final MultivaluedMap<String, String> formData) {
         AccessCodeEntry accessCode = getAccessCodeEntry(RequiredAction.UPDATE_PROFILE);
         if (accessCode == null) {
-            return forwardToErrorPage();
+            return unauthorized();
         }
 
         UserModel user = getUser(accessCode);
@@ -116,7 +116,7 @@ public class RequiredActionsService {
     public Response updateTotp(final MultivaluedMap<String, String> formData) {
         AccessCodeEntry accessCode = getAccessCodeEntry(RequiredAction.CONFIGURE_TOTP);
         if (accessCode == null) {
-            return forwardToErrorPage();
+            return unauthorized();
         }
 
         UserModel user = getUser(accessCode);
@@ -152,7 +152,7 @@ public class RequiredActionsService {
         AccessCodeEntry accessCode = getAccessCodeEntry(RequiredAction.UPDATE_PASSWORD);
         if (accessCode == null) {
             logger.debug("updatePassword access code is null");
-            return forwardToErrorPage();
+            return unauthorized();
         }
         logger.debug("updatePassword has access code");
 
@@ -196,7 +196,7 @@ public class RequiredActionsService {
             AccessCodeEntry accessCode = tokenManager.getAccessCode(uriInfo.getQueryParameters().getFirst("key"));
             if (accessCode == null || accessCode.isExpired()
                     || !accessCode.getRequiredActions().contains(RequiredAction.VERIFY_EMAIL)) {
-                return forwardToErrorPage();
+                return unauthorized();
             }
 
             UserModel user = getUser(accessCode);
@@ -209,7 +209,7 @@ public class RequiredActionsService {
         } else {
             AccessCodeEntry accessCode = getAccessCodeEntry(RequiredAction.VERIFY_EMAIL);
             if (accessCode == null) {
-                return forwardToErrorPage();
+                return unauthorized();
             }
 
             return Flows.forms(realm, request, uriInfo).setAccessCode(accessCode).setUser(accessCode.getUser())
@@ -224,7 +224,7 @@ public class RequiredActionsService {
             AccessCodeEntry accessCode = tokenManager.getAccessCode(uriInfo.getQueryParameters().getFirst("key"));
             if (accessCode == null || accessCode.isExpired()
                     || !accessCode.getRequiredActions().contains(RequiredAction.UPDATE_PASSWORD)) {
-                return forwardToErrorPage();
+                return unauthorized();
             }
             return Flows.forms(realm, request, uriInfo).setAccessCode(accessCode).forwardToAction(RequiredAction.UPDATE_PASSWORD);
         } else {
@@ -378,8 +378,8 @@ public class RequiredActionsService {
         }
     }
 
-    private Response forwardToErrorPage() {
-        return Flows.forms(realm, request, uriInfo).forwardToErrorPage();
+    private Response unauthorized() {
+        return Flows.forms(realm, request, uriInfo).setError("Unauthorized request").forwardToErrorPage();
     }
 
 }
diff --git a/services/src/main/java/org/keycloak/services/resources/TokenService.java b/services/src/main/java/org/keycloak/services/resources/TokenService.java
index b40e10e..a9cdb62 100755
--- a/services/src/main/java/org/keycloak/services/resources/TokenService.java
+++ b/services/src/main/java/org/keycloak/services/resources/TokenService.java
@@ -489,23 +489,17 @@ public class TokenService {
 
         if (!realm.isEnabled()) {
             logger.warn("Realm not enabled");
-            oauth.forwardToSecurityFailure("Realm not enabled");
-            return null;
+            return oauth.forwardToSecurityFailure("Realm not enabled");
         }
         UserModel client = realm.getUser(clientId);
         if (client == null) {
             logger.warn("Unknown login requester: " + clientId);
-            oauth.forwardToSecurityFailure("Unknown login requester.");
-            transaction.rollback();
-            return null;
+            return oauth.forwardToSecurityFailure("Unknown login requester.");
         }
 
         if (!client.isEnabled()) {
             logger.warn("Login requester not enabled.");
-            oauth.forwardToSecurityFailure("Login requester not enabled.");
-            transaction.rollback();
-            session.close();
-            return null;
+            return oauth.forwardToSecurityFailure("Login requester not enabled.");
         }
         redirect = verifyRedirectUri(redirect, client);
         if (redirect == null) {
@@ -518,10 +512,7 @@ public class TokenService {
         boolean isResource = realm.hasRole(client, resourceRole);
         if (!isResource && !realm.hasRole(client, identityRequestRole)) {
             logger.warn("Login requester not allowed to request login.");
-            oauth.forwardToSecurityFailure("Login requester not allowed to request login.");
-            transaction.rollback();
-            session.close();
-            return null;
+            return oauth.forwardToSecurityFailure("Login requester not allowed to request login.");
         }
         logger.info("Checking cookie...");
         UserModel user = authManager.authenticateIdentityCookie(realm, uriInfo, headers);