keycloak-uncached

Details

diff --git a/forms/src/main/java/org/keycloak/forms/UrlBean.java b/forms/src/main/java/org/keycloak/forms/UrlBean.java
index f6f5f12..c3e24b1 100755
--- a/forms/src/main/java/org/keycloak/forms/UrlBean.java
+++ b/forms/src/main/java/org/keycloak/forms/UrlBean.java
@@ -52,6 +52,10 @@ public class UrlBean {
         this.referrerURI = referrerURI;
     }
 
+    protected String getRealmIdentifier() {
+        return realm.getName();
+    }
+
     public RealmBean getRealm() {
         return realm;
     }
@@ -61,11 +65,11 @@ public class UrlBean {
     }
 
     public String getAccessUrl() {
-        return Urls.accountAccessPage(baseURI, realm.getId()).toString();
+        return Urls.accountAccessPage(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getAccountUrl() {
-        return Urls.accountPage(baseURI, realm.getId()).toString();
+        return Urls.accountPage(baseURI, getRealmIdentifier()).toString();
     }
 
     URI getBaseURI() {
@@ -73,24 +77,24 @@ public class UrlBean {
     }
 
     public String getLoginAction() {
-        return Urls.realmLoginAction(baseURI, realm.getId()).toString();
+        return Urls.realmLoginAction(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginUrl() {
-        return Urls.realmLoginPage(baseURI, realm.getId()).toString();
+        return Urls.realmLoginPage(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getPasswordUrl() {
-        return Urls.accountPasswordPage(baseURI, realm.getId()).toString();
+        return Urls.accountPasswordPage(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getRegistrationAction() {
         if (realm.isSaas()) {
             return Urls.saasRegisterAction(baseURI).toString();
         } else if (socialRegistration){
-            return Urls.socialRegisterAction(baseURI, realm.getId()).toString();
+            return Urls.socialRegisterAction(baseURI, getRealmIdentifier()).toString();
         } else {
-            return Urls.realmRegisterAction(baseURI, realm.getId()).toString();
+            return Urls.realmRegisterAction(baseURI, getRealmIdentifier()).toString();
         }
     }
 
@@ -99,48 +103,48 @@ public class UrlBean {
             // TODO: saas social registration
             return Urls.saasRegisterPage(baseURI).toString();
         } else {
-            return Urls.realmRegisterPage(baseURI, realm.getId()).toString();
+            return Urls.realmRegisterPage(baseURI, getRealmIdentifier()).toString();
         }
     }
 
     public String getLoginUpdatePasswordUrl() {
-        return Urls.loginActionUpdatePassword(baseURI, realm.getId()).toString();
+        return Urls.loginActionUpdatePassword(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginUpdateTotpUrl() {
-        return Urls.loginActionUpdateTotp(baseURI, realm.getId()).toString();
+        return Urls.loginActionUpdateTotp(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginUpdateProfileUrl() {
-        return Urls.loginActionUpdateProfile(baseURI, realm.getId()).toString();
+        return Urls.loginActionUpdateProfile(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getSocialUrl() {
-        return Urls.accountSocialPage(baseURI, realm.getId()).toString();
+        return Urls.accountSocialPage(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getTotpUrl() {
-        return Urls.accountTotpPage(baseURI, realm.getId()).toString();
+        return Urls.accountTotpPage(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getTotpRemoveUrl() {
-        return Urls.accountTotpRemove(baseURI, realm.getId()).toString();
+        return Urls.accountTotpRemove(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLogoutUrl() {
-        return Urls.accountLogout(baseURI, realm.getId()).toString();
+        return Urls.accountLogout(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginPasswordResetUrl() {
-        return Urls.loginPasswordReset(baseURI, realm.getId()).toString();
+        return Urls.loginPasswordReset(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginUsernameReminderUrl() {
-        return Urls.loginUsernameReminder(baseURI, realm.getId()).toString();
+        return Urls.loginUsernameReminder(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getLoginEmailVerificationUrl() {
-        return Urls.loginActionEmailVerification(baseURI, realm.getId()).toString();
+        return Urls.loginActionEmailVerification(baseURI, getRealmIdentifier()).toString();
     }
 
     public String getReferrerURI() {
diff --git a/server/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/server/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
index d4f4af9..87755b6 100755
--- a/server/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
+++ b/server/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
@@ -7,14 +7,19 @@
             <!-- Exclude JAVA EE of JBOSS (javax.ws..) => Add dependency javax.annotation -->
             <module name="javaee.api" />
             <!-- Exclude RestEasy conflict (javax.ws.rs.ext.RunDelegate) -->
+            <module name="javax.ws.rs.api"/>
+            <module name="org.codehaus.jackson.jackson-core-asl" />
             <module name="org.jboss.resteasy.resteasy-atom-provider" />
             <module name="org.jboss.resteasy.resteasy-cdi" />
+            <module name="org.jboss.resteasy.resteasy-crypto" />
             <module name="org.jboss.resteasy.resteasy-jackson-provider" />
             <module name="org.jboss.resteasy.resteasy-jaxb-provider" />
             <module name="org.jboss.resteasy.resteasy-jaxrs" />
             <module name="org.jboss.resteasy.resteasy-jettison-provider" />
             <module name="org.jboss.resteasy.resteasy-jsapi" />
+            <module name="org.jboss.resteasy.resteasy-json-p-provider" />
             <module name="org.jboss.resteasy.resteasy-multipart-provider" />
+            <module name="org.jboss.resteasy.resteasy-validator-provider-11" />
             <module name="org.jboss.resteasy.resteasy-yaml-provider" />
         </exclusions>
     </deployment>
diff --git a/services/src/main/java/org/keycloak/services/email/EmailSender.java b/services/src/main/java/org/keycloak/services/email/EmailSender.java
index 8947ef4..ea76c3d 100755
--- a/services/src/main/java/org/keycloak/services/email/EmailSender.java
+++ b/services/src/main/java/org/keycloak/services/email/EmailSender.java
@@ -107,7 +107,7 @@ public class EmailSender {
         UriBuilder builder = Urls.loginActionEmailVerificationBuilder(uriInfo.getBaseUri());
         builder.queryParam("key", accessCode.getId());
 
-        URI uri = builder.build(realm.getId());
+        URI uri = builder.build(realm.getName());
 
 
         StringBuilder sb = getHeader(user);
@@ -128,7 +128,7 @@ public class EmailSender {
         UriBuilder builder = Urls.loginPasswordResetBuilder(uriInfo.getBaseUri());
         builder.queryParam("key", accessCode.getId());
 
-        URI uri = builder.build(realm.getId());
+        URI uri = builder.build(realm.getName());
 
         StringBuilder sb = getHeader(user);
 
diff --git a/services/src/main/java/org/keycloak/services/managers/ApplicationManager.java b/services/src/main/java/org/keycloak/services/managers/ApplicationManager.java
index 27bb39e..4260d50 100755
--- a/services/src/main/java/org/keycloak/services/managers/ApplicationManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/ApplicationManager.java
@@ -177,12 +177,12 @@ public class ApplicationManager {
 
     public BaseAdapterConfig toInstallationRepresentation(RealmModel realmModel, ApplicationModel applicationModel, URI baseUri) {
         BaseAdapterConfig rep = new BaseAdapterConfig();
-        rep.setRealm(realmModel.getId());
+        rep.setRealm(realmModel.getName());
         rep.setRealmKey(realmModel.getPublicKeyPem());
         rep.setSslNotRequired(realmModel.isSslNotRequired());
 
-        rep.setAuthUrl(Urls.realmLoginPage(baseUri, realmModel.getId()).toString());
-        rep.setCodeUrl(Urls.realmCode(baseUri, realmModel.getId()).toString());
+        rep.setAuthUrl(Urls.realmLoginPage(baseUri, realmModel.getName()).toString());
+        rep.setCodeUrl(Urls.realmCode(baseUri, realmModel.getName()).toString());
         rep.setUseResourceRoleMappings(applicationModel.getRoles().size() > 0);
 
         rep.setResource(applicationModel.getName());
diff --git a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
index 4db51a7..5a8542a 100755
--- a/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/AuthenticationManager.java
@@ -43,7 +43,7 @@ public class AuthenticationManager {
         token.id(RealmManager.generateId());
         token.issuedNow();
         token.principal(username);
-        token.audience(realm.getId());
+        token.audience(realm.getName());
         if (realm.getTokenLifespan() > 0) {
             token.expiration((System.currentTimeMillis() / 1000) + realm.getTokenLifespan());
         }
@@ -53,8 +53,7 @@ public class AuthenticationManager {
 
     public NewCookie createLoginCookie(RealmModel realm, UserModel user, UriInfo uriInfo) {
         String cookieName = KEYCLOAK_IDENTITY_COOKIE;
-        URI uri = RealmsResource.realmBaseUrl(uriInfo).build(realm.getId());
-        String cookiePath = uri.getRawPath();
+        String cookiePath = getIdentityCookiePath(realm, uriInfo);
         return createLoginCookie(realm, user, null, cookieName, cookiePath);
     }
 
@@ -92,13 +91,17 @@ public class AuthenticationManager {
 
 
     public void expireIdentityCookie(RealmModel realm, UriInfo uriInfo) {
-        URI uri = RealmsResource.realmBaseUrl(uriInfo).build(realm.getId());
         logger.debug("Expiring identity cookie");
-        String path = uri.getRawPath();
+        String path = getIdentityCookiePath(realm, uriInfo);
         String cookieName = KEYCLOAK_IDENTITY_COOKIE;
         expireCookie(cookieName, path);
     }
 
+    protected String getIdentityCookiePath(RealmModel realm, UriInfo uriInfo) {
+        URI uri = RealmsResource.realmBaseUrl(uriInfo).build(realm.getName());
+        return uri.getRawPath();
+    }
+
     public void expireSaasIdentityCookie(UriInfo uriInfo) {
         URI uri = AdminService.saasCookiePath(uriInfo).build();
         String cookiePath = uri.getRawPath();
@@ -163,7 +166,7 @@ public class AuthenticationManager {
 
         String tokenString = cookie.getValue();
         try {
-            SkeletonKeyToken token = RSATokenVerifier.verifyToken(tokenString, realm.getPublicKey(), realm.getId());
+            SkeletonKeyToken token = RSATokenVerifier.verifyToken(tokenString, realm.getPublicKey(), realm.getName());
             if (!token.isActive()) {
                 logger.debug("identity cookie expired");
                 expireIdentityCookie(realm, uriInfo);
@@ -212,7 +215,7 @@ public class AuthenticationManager {
 
 
         try {
-            SkeletonKeyToken token = RSATokenVerifier.verifyToken(tokenString, realm.getPublicKey(), realm.getId());
+            SkeletonKeyToken token = RSATokenVerifier.verifyToken(tokenString, realm.getPublicKey(), realm.getName());
             if (!token.isActive()) {
                 throw new NotAuthorizedException("token_expired");
             }
diff --git a/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java b/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
index fa99940..f543771 100755
--- a/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/OAuthClientManager.java
@@ -85,12 +85,12 @@ public class OAuthClientManager {
 
     public BaseAdapterConfig toInstallationRepresentation(RealmModel realmModel, OAuthClientModel model, URI baseUri) {
         BaseAdapterConfig rep = new BaseAdapterConfig();
-        rep.setRealm(realmModel.getId());
+        rep.setRealm(realmModel.getName());
         rep.setRealmKey(realmModel.getPublicKeyPem());
         rep.setSslNotRequired(realmModel.isSslNotRequired());
 
-        rep.setAuthUrl(Urls.realmLoginPage(baseUri, realmModel.getId()).toString());
-        rep.setCodeUrl(Urls.realmCode(baseUri, realmModel.getId()).toString());
+        rep.setAuthUrl(Urls.realmLoginPage(baseUri, realmModel.getName()).toString());
+        rep.setCodeUrl(Urls.realmCode(baseUri, realmModel.getName()).toString());
         rep.setUseResourceRoleMappings(false);
 
         rep.setResource(model.getOAuthAgent().getLoginName());
diff --git a/services/src/main/java/org/keycloak/services/managers/RealmManager.java b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
index 9aea0b8..e6bd3f8 100755
--- a/services/src/main/java/org/keycloak/services/managers/RealmManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/RealmManager.java
@@ -172,7 +172,11 @@ public class RealmManager {
     }
 
     public RealmModel importRealm(RealmRepresentation rep, UserModel realmCreator) {
-        RealmModel realm = createRealm(rep.getRealm());
+        String id = rep.getId();
+        if (id == null) {
+            id = generateId();
+        }
+        RealmModel realm = createRealm(id, rep.getRealm());
         importRealm(rep, realm);
         return realm;
     }
diff --git a/services/src/main/java/org/keycloak/services/managers/TokenManager.java b/services/src/main/java/org/keycloak/services/managers/TokenManager.java
index 6a9a811..3cd575b 100755
--- a/services/src/main/java/org/keycloak/services/managers/TokenManager.java
+++ b/services/src/main/java/org/keycloak/services/managers/TokenManager.java
@@ -174,7 +174,7 @@ public class TokenManager {
         token.id(RealmManager.generateId());
         token.issuedNow();
         token.principal(user.getLoginName());
-        token.audience(realm.getId());
+        token.audience(realm.getName());
         if (realm.getTokenLifespan() > 0) {
             token.expiration((System.currentTimeMillis() / 1000) + realm.getTokenLifespan());
         }
diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java
index d950b10..36f529a 100755
--- a/services/src/main/java/org/keycloak/services/resources/AccountService.java
+++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java
@@ -330,10 +330,10 @@ public class AccountService {
                 throw new BadRequestException();
             }
 
-            URI accountUri = Urls.accountBase(uriInfo.getBaseUri()).path("/").build(realm.getId());
+            URI accountUri = Urls.accountBase(uriInfo.getBaseUri()).path("/").build(realm.getName());
             URI redirectUri = path != null ? accountUri.resolve(path) : accountUri;
 
-            NewCookie cookie = authManager.createAccountIdentityCookie(realm, accessCode.getUser(), client, Urls.accountBase(uriInfo.getBaseUri()).build(realm.getId()));
+            NewCookie cookie = authManager.createAccountIdentityCookie(realm, accessCode.getUser(), client, Urls.accountBase(uriInfo.getBaseUri()).build(realm.getName()));
             return Response.status(302).cookie(cookie).location(redirectUri).build();
         } finally {
             authManager.expireCookie(AbstractOAuthClient.OAUTH_TOKEN_REQUEST_STATE, uriInfo.getAbsolutePath().getRawPath());
@@ -344,7 +344,7 @@ public class AccountService {
     @GET
     public Response logout() {
         // TODO Should use single-sign out via TokenService
-        URI baseUri = Urls.accountBase(uriInfo.getBaseUri()).build(realm.getId());
+        URI baseUri = Urls.accountBase(uriInfo.getBaseUri()).build(realm.getName());
         authManager.expireIdentityCookie(realm, uriInfo);
         authManager.expireAccountIdentityCookie(baseUri);
         return Response.status(302).location(baseUri).build();
@@ -352,12 +352,12 @@ public class AccountService {
 
     private Response login(String path) {
         JaxrsOAuthClient oauth = new JaxrsOAuthClient();
-        String authUrl = Urls.realmLoginPage(uriInfo.getBaseUri(), realm.getId()).toString();
+        String authUrl = Urls.realmLoginPage(uriInfo.getBaseUri(), realm.getName()).toString();
         oauth.setAuthUrl(authUrl);
 
         oauth.setClientId(Constants.ACCOUNT_APPLICATION);
 
-        URI accountUri = Urls.accountPageBuilder(uriInfo.getBaseUri()).path(AccountService.class, "loginRedirect").build(realm.getId());
+        URI accountUri = Urls.accountPageBuilder(uriInfo.getBaseUri()).path(AccountService.class, "loginRedirect").build(realm.getName());
 
         String referrer = getReferrer();
         if (referrer != null) {
diff --git a/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java b/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
index b69cea8..8771313 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/OAuthFlows.java
@@ -126,7 +126,7 @@ public class OAuthFlows {
         request.setAttribute("realmRolesRequested", accessCode.getRealmRolesRequested());
         request.setAttribute("resourceRolesRequested", accessCode.getResourceRolesRequested());
         request.setAttribute("client", client);
-        request.setAttribute("action", TokenService.processOAuthUrl(uriInfo).build(realm.getId()).toString());
+        request.setAttribute("action", TokenService.processOAuthUrl(uriInfo).build(realm.getName()).toString());
         request.setAttribute("code", accessCode.getCode());
 
         return Flows.forms(realm, request, uriInfo).setAccessCode(accessCode).forwardToOAuthGrant();
diff --git a/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java b/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java
index 01094b4..1b699aa 100755
--- a/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/PublicRealmResource.java
@@ -50,10 +50,10 @@ public class PublicRealmResource {
     public String getRealmHtml(@PathParam("realm") String id) {
         StringBuffer html = new StringBuffer();
 
-        String authUri = TokenService.loginPageUrl(uriInfo).build(realm.getId()).toString();
-        String codeUri = TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getId()).toString();
-        String grantUrl = TokenService.grantAccessTokenUrl(uriInfo).build(realm.getId()).toString();
-        String idGrantUrl = TokenService.grantIdentityTokenUrl(uriInfo).build(realm.getId()).toString();
+        String authUri = TokenService.loginPageUrl(uriInfo).build(realm.getName()).toString();
+        String codeUri = TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getName()).toString();
+        String grantUrl = TokenService.grantAccessTokenUrl(uriInfo).build(realm.getName()).toString();
+        String idGrantUrl = TokenService.grantIdentityTokenUrl(uriInfo).build(realm.getName()).toString();
 
         html.append("<html><body><h1>Realm: ").append(realm.getName()).append("</h1>");
         html.append("<p>auth: ").append(authUri).append("</p>");
@@ -74,10 +74,10 @@ public class PublicRealmResource {
         rep.setPublicKeyPem(realm.getPublicKeyPem());
         rep.setAdminRole(ADMIN_ROLE);
 
-        rep.setAuthorizationUrl(TokenService.loginPageUrl(uriInfo).build(realm.getId()).toString());
-        rep.setCodeUrl(TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getId()).toString());
-        rep.setGrantUrl(TokenService.grantAccessTokenUrl(uriInfo).build(realm.getId()).toString());
-        String idGrantUrl = TokenService.grantIdentityTokenUrl(uriInfo).build(realm.getId()).toString();
+        rep.setAuthorizationUrl(TokenService.loginPageUrl(uriInfo).build(realm.getName()).toString());
+        rep.setCodeUrl(TokenService.accessCodeToTokenUrl(uriInfo).build(realm.getName()).toString());
+        rep.setGrantUrl(TokenService.grantAccessTokenUrl(uriInfo).build(realm.getName()).toString());
+        String idGrantUrl = TokenService.grantIdentityTokenUrl(uriInfo).build(realm.getName()).toString();
         rep.setIdentityGrantUrl(idGrantUrl);
         return rep;
     }
diff --git a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
index 9b74063..2338387 100755
--- a/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/RealmsResource.java
@@ -59,8 +59,7 @@ public class RealmsResource {
     protected RealmModel locateRealm(String name, RealmManager realmManager) {
         RealmModel realm = realmManager.getRealmByName(name);
         if (realm == null) {
-            logger.debug("realm not found");
-            throw new NotFoundException();
+            throw new NotFoundException("Realm " + name + " not found");
         }
         return realm;
     }