keycloak-uncached

Details

diff --git a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/authorization/AbstractPolicyEnforcer.java b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/authorization/AbstractPolicyEnforcer.java
index 1673aa6..18a93a7 100644
--- a/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/authorization/AbstractPolicyEnforcer.java
+++ b/adapters/oidc/adapter-core/src/main/java/org/keycloak/adapters/authorization/AbstractPolicyEnforcer.java
@@ -253,8 +253,7 @@ public abstract class AbstractPolicyEnforcer {
     }
 
     private String getPath(Request request) {
-        String pathInfo = URI.create(request.getURI()).getPath().substring(1);
-        return pathInfo.substring(pathInfo.indexOf('/'), pathInfo.length());
+        return request.getRelativePath();
     }
 
     private Set<String> getRequiredScopes(PathConfig pathConfig, Request request) {
diff --git a/adapters/oidc/jaxrs-oauth-client/src/main/java/org/keycloak/jaxrs/JaxrsHttpFacade.java b/adapters/oidc/jaxrs-oauth-client/src/main/java/org/keycloak/jaxrs/JaxrsHttpFacade.java
index 82ecc0b..1a0eb9c 100755
--- a/adapters/oidc/jaxrs-oauth-client/src/main/java/org/keycloak/jaxrs/JaxrsHttpFacade.java
+++ b/adapters/oidc/jaxrs-oauth-client/src/main/java/org/keycloak/jaxrs/JaxrsHttpFacade.java
@@ -67,6 +67,11 @@ public class JaxrsHttpFacade implements OIDCHttpFacade {
         }
 
         @Override
+        public String getRelativePath() {
+            return requestContext.getUriInfo().getPath();
+        }
+
+        @Override
         public boolean isSecure() {
             return securityContext.isSecure();
         }
diff --git a/adapters/oidc/servlet-oauth-client/src/main/java/org/keycloak/servlet/ServletOAuthClient.java b/adapters/oidc/servlet-oauth-client/src/main/java/org/keycloak/servlet/ServletOAuthClient.java
index 9660062..9e4fa0a 100755
--- a/adapters/oidc/servlet-oauth-client/src/main/java/org/keycloak/servlet/ServletOAuthClient.java
+++ b/adapters/oidc/servlet-oauth-client/src/main/java/org/keycloak/servlet/ServletOAuthClient.java
@@ -219,6 +219,11 @@ public class ServletOAuthClient extends KeycloakDeploymentDelegateOAuthClient {
                 }
 
                 @Override
+                public String getRelativePath() {
+                    return servletRequest.getServletPath();
+                }
+
+                @Override
                 public boolean isSecure() {
                     return servletRequest.isSecure();
                 }
diff --git a/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/facade/WrappedHttpServletRequest.java b/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/facade/WrappedHttpServletRequest.java
index e0cfd69..848ca45 100755
--- a/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/facade/WrappedHttpServletRequest.java
+++ b/adapters/oidc/spring-security/src/main/java/org/keycloak/adapters/springsecurity/facade/WrappedHttpServletRequest.java
@@ -71,6 +71,11 @@ class WrappedHttpServletRequest implements Request {
     }
 
     @Override
+    public String getRelativePath() {
+        return request.getServletPath();
+    }
+
+    @Override
     public boolean isSecure() {
         return request.isSecure();
     }
diff --git a/adapters/spi/adapter-spi/src/main/java/org/keycloak/adapters/spi/HttpFacade.java b/adapters/spi/adapter-spi/src/main/java/org/keycloak/adapters/spi/HttpFacade.java
index a011824..2429286 100755
--- a/adapters/spi/adapter-spi/src/main/java/org/keycloak/adapters/spi/HttpFacade.java
+++ b/adapters/spi/adapter-spi/src/main/java/org/keycloak/adapters/spi/HttpFacade.java
@@ -44,6 +44,13 @@ public interface HttpFacade {
         String getURI();
 
         /**
+         * Get the request relative path.
+         *
+         * @return the request relative path
+         */
+        String getRelativePath();
+
+        /**
          * HTTPS?
          *
          * @return
diff --git a/adapters/spi/jetty-adapter-spi/src/main/java/org/keycloak/adapters/jetty/spi/JettyHttpFacade.java b/adapters/spi/jetty-adapter-spi/src/main/java/org/keycloak/adapters/jetty/spi/JettyHttpFacade.java
index 2fc525e..dac7973 100755
--- a/adapters/spi/jetty-adapter-spi/src/main/java/org/keycloak/adapters/jetty/spi/JettyHttpFacade.java
+++ b/adapters/spi/jetty-adapter-spi/src/main/java/org/keycloak/adapters/jetty/spi/JettyHttpFacade.java
@@ -79,6 +79,11 @@ public class JettyHttpFacade implements HttpFacade {
         }
 
         @Override
+        public String getRelativePath() {
+            return request.getServletPath();
+        }
+
+        @Override
         public String getFirstParam(String param) {
             return request.getParameter(param);
         }
diff --git a/adapters/spi/servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java b/adapters/spi/servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java
index 43349ab..6d99560 100755
--- a/adapters/spi/servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java
+++ b/adapters/spi/servlet-adapter-spi/src/main/java/org/keycloak/adapters/servlet/ServletHttpFacade.java
@@ -66,6 +66,11 @@ public class ServletHttpFacade implements HttpFacade {
         }
 
         @Override
+        public String getRelativePath() {
+            return request.getServletPath();
+        }
+
+        @Override
         public boolean isSecure() {
             return request.isSecure();
         }
diff --git a/adapters/spi/tomcat-adapter-spi/src/main/java/org/keycloak/adapters/tomcat/CatalinaHttpFacade.java b/adapters/spi/tomcat-adapter-spi/src/main/java/org/keycloak/adapters/tomcat/CatalinaHttpFacade.java
index 315635d..c472564 100755
--- a/adapters/spi/tomcat-adapter-spi/src/main/java/org/keycloak/adapters/tomcat/CatalinaHttpFacade.java
+++ b/adapters/spi/tomcat-adapter-spi/src/main/java/org/keycloak/adapters/tomcat/CatalinaHttpFacade.java
@@ -79,6 +79,11 @@ public class CatalinaHttpFacade implements HttpFacade {
         }
 
         @Override
+        public String getRelativePath() {
+            return request.getServletPath();
+        }
+
+        @Override
         public boolean isSecure() {
             return request.isSecure();
         }
diff --git a/adapters/spi/undertow-adapter-spi/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java b/adapters/spi/undertow-adapter-spi/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java
index a14e0b7..21102f1 100755
--- a/adapters/spi/undertow-adapter-spi/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java
+++ b/adapters/spi/undertow-adapter-spi/src/main/java/org/keycloak/adapters/undertow/UndertowHttpFacade.java
@@ -84,6 +84,11 @@ public class UndertowHttpFacade implements HttpFacade {
         }
 
         @Override
+        public String getRelativePath() {
+            return exchange.getRelativePath();
+        }
+
+        @Override
         public boolean isSecure() {
             String protocol = exchange.getRequestScheme();
             return protocol.equalsIgnoreCase("https");
diff --git a/examples/demo-template/offline-access-app/src/main/java/org/keycloak/example/OfflineAccessPortalServlet.java b/examples/demo-template/offline-access-app/src/main/java/org/keycloak/example/OfflineAccessPortalServlet.java
index 3783c12..cd912d7 100755
--- a/examples/demo-template/offline-access-app/src/main/java/org/keycloak/example/OfflineAccessPortalServlet.java
+++ b/examples/demo-template/offline-access-app/src/main/java/org/keycloak/example/OfflineAccessPortalServlet.java
@@ -182,6 +182,11 @@ public class OfflineAccessPortalServlet extends HttpServlet {
                     }
 
                     @Override
+                    public String getRelativePath() {
+                        return servletRequest.getServletPath();
+                    }
+
+                    @Override
                     public boolean isSecure() {
                         return servletRequest.isSecure();
                     }