From eb9335f706f90e5512c87f7a3b160959ee990e7f Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Mon, 12 May 2014 18:34:17 -0400 Subject: [PATCH 1/3] aerogear --- .../org/keycloak/theme/ClassLoaderTheme.java | 26 +++++--- .../admin/keycloak/resources/css/styles.css | 3 +- project-integrations/aerogear-ups/app/pom.xml | 2 +- .../keycloak/example/BootstrapListener.java | 4 +- .../app/src/main/webapp/WEB-INF/web.xml | 43 ++++++------ .../app/src/main/webapp/index.html | 4 +- .../main/webapp/{customers => ups}/view.jsp | 2 +- .../ups/security/AerogearThemeProvider.java | 62 ++++++++++++++++++ .../org.keycloak.freemarker.ThemeProvider | 1 + .../aerogear/resources/css/account.css | 8 +++ .../account/aerogear/resources/img/logo.png | Bin 0 -> 6329 bytes .../theme/account/aerogear/theme.properties | 4 ++ .../admin/aerogear/resources/css/styles.css | 45 +++++++++++++ .../admin/aerogear/resources/img/logo.png | Bin 0 -> 6329 bytes .../theme/admin/aerogear/theme.properties | 4 ++ .../login/aerogear/resources/css/login.css | 9 +++ .../login/aerogear/resources/img/logo.png | Bin 0 -> 6329 bytes .../theme/login/aerogear/theme.properties | 4 ++ .../src/main/webapp/WEB-INF/testrealm.json | 25 ++++--- 19 files changed, 197 insertions(+), 49 deletions(-) mode change 100644 => 100755 forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java mode change 100644 => 100755 forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css rename project-integrations/aerogear-ups/app/src/main/webapp/{customers => ups}/view.jsp (81%) create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProvider.java create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/css/account.css create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/img/logo.png create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/theme.properties create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/css/styles.css create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/img/logo.png create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/theme.properties create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/css/login.css create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/img/logo.png create mode 100755 project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/theme.properties diff --git a/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java b/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java old mode 100644 new mode 100755 index 5a41cf70a6..1a793eee7c --- a/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java +++ b/forms/common-themes/src/main/java/org/keycloak/theme/ClassLoaderTheme.java @@ -12,25 +12,29 @@ import java.util.Properties; */ public class ClassLoaderTheme implements Theme { - private final String name; + private String name; - private final String parentName; + private String parentName; - private final String importName; + private String importName; - private final Type type; + private Type type; - private final ClassLoader classLoader; + private ClassLoader classLoader; - private final String templateRoot; + private String templateRoot; - private final String resourceRoot; + private String resourceRoot; - private final String messages; + private String messages; - private final Properties properties; + private Properties properties; public ClassLoaderTheme(String name, Type type, ClassLoader classLoader) throws IOException { + init(name, type, classLoader); + } + + public void init(String name, Type type, ClassLoader classLoader) throws IOException { this.name = name; this.type = type; this.classLoader = classLoader; @@ -53,6 +57,10 @@ public class ClassLoaderTheme implements Theme { } } + public ClassLoaderTheme() { + + } + @Override public String getName() { return name; diff --git a/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css b/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css old mode 100644 new mode 100755 index d5ca9aafe9..e71ad3db1a --- a/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css +++ b/forms/common-themes/src/main/resources/theme/admin/keycloak/resources/css/styles.css @@ -31,4 +31,5 @@ border-bottom: none; border-right-color: rgba(255,255,255,0.15); border-top-color: rgba(255,255,255,0.05); -} \ No newline at end of file +} + diff --git a/project-integrations/aerogear-ups/app/pom.xml b/project-integrations/aerogear-ups/app/pom.xml index 31239638ae..9508f274f1 100755 --- a/project-integrations/aerogear-ups/app/pom.xml +++ b/project-integrations/aerogear-ups/app/pom.xml @@ -85,7 +85,7 @@ - app + aerogear-ups org.jboss.as.plugins diff --git a/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java b/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java index 23c632abe3..248785173e 100755 --- a/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java +++ b/project-integrations/aerogear-ups/app/src/main/java/org/keycloak/example/BootstrapListener.java @@ -15,8 +15,8 @@ public class BootstrapListener implements ServletContextListener { public void contextInitialized(ServletContextEvent sce) { AdapterDeploymentContext deploymentContext = (AdapterDeploymentContext)sce.getServletContext().getAttribute(AdapterDeploymentContext.class.getName()); AdapterConfig config = new AdapterConfig(); - config.setRealm("demo"); - config.setResource("customer-portal"); + config.setRealm("aerogear"); + config.setResource("unified-push-server"); config.setAuthServerUrl("/auth"); config.setSslNotRequired(true); config.setPublicClient(true); diff --git a/project-integrations/aerogear-ups/app/src/main/webapp/WEB-INF/web.xml b/project-integrations/aerogear-ups/app/src/main/webapp/WEB-INF/web.xml index 1be2b565ec..23e283196c 100755 --- a/project-integrations/aerogear-ups/app/src/main/webapp/WEB-INF/web.xml +++ b/project-integrations/aerogear-ups/app/src/main/webapp/WEB-INF/web.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> - app + aerogear-ups org.keycloak.example.BootstrapListener @@ -13,28 +13,8 @@ - Customers - /customers/* - - - user - - - - - - AdminConsole - /admin/* - - - admin - - - - - - Database - /rest/* + UPS + /ups/* user @@ -46,7 +26,22 @@ --> - + + + AdminConsole + /admin/* + + + admin + + + + + BASIC demo diff --git a/project-integrations/aerogear-ups/app/src/main/webapp/index.html b/project-integrations/aerogear-ups/app/src/main/webapp/index.html index 681fa08a17..83a804267a 100755 --- a/project-integrations/aerogear-ups/app/src/main/webapp/index.html +++ b/project-integrations/aerogear-ups/app/src/main/webapp/index.html @@ -5,9 +5,9 @@ -

Customer Portal

+

Aerogear UPS Portal

-

Customer Listing

+

Play with Aerogear UPS

\ No newline at end of file diff --git a/project-integrations/aerogear-ups/app/src/main/webapp/customers/view.jsp b/project-integrations/aerogear-ups/app/src/main/webapp/ups/view.jsp similarity index 81% rename from project-integrations/aerogear-ups/app/src/main/webapp/customers/view.jsp rename to project-integrations/aerogear-ups/app/src/main/webapp/ups/view.jsp index 5e0cc9f308..ae21dbc3cc 100755 --- a/project-integrations/aerogear-ups/app/src/main/webapp/customers/view.jsp +++ b/project-integrations/aerogear-ups/app/src/main/webapp/ups/view.jsp @@ -2,7 +2,7 @@ pageEncoding="ISO-8859-1" %> - Customer View Page + Aerogear - UPS View Page diff --git a/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProvider.java b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProvider.java new file mode 100755 index 0000000000..d8ef5e0906 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/java/org/aerogear/ups/security/AerogearThemeProvider.java @@ -0,0 +1,62 @@ +package org.aerogear.ups.security; + +import org.keycloak.freemarker.Theme; +import org.keycloak.freemarker.ThemeProvider; +import org.keycloak.theme.ClassLoaderTheme; + +import java.io.IOException; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * @author Stian Thorgersen + */ +public class AerogearThemeProvider implements ThemeProvider { + + public static final String AEROGEAR = "aerogear"; + + private static Set ACCOUNT_THEMES = new HashSet(); + private static Set LOGIN_THEMES = new HashSet(); + private static Set ADMIN_THEMES = new HashSet(); + + static { + Collections.addAll(ACCOUNT_THEMES, AEROGEAR); + Collections.addAll(LOGIN_THEMES, AEROGEAR); + Collections.addAll(ADMIN_THEMES, AEROGEAR); + } + + @Override + public int getProviderPriority() { + return 0; + } + + @Override + public Theme createTheme(String name, Theme.Type type) throws IOException { + if (hasTheme(name, type)) { + return new ClassLoaderTheme(name, type, getClass().getClassLoader()); + } else { + return null; + } + } + + @Override + public Set nameSet(Theme.Type type) { + switch (type) { + case LOGIN: + return LOGIN_THEMES; + case ACCOUNT: + return ACCOUNT_THEMES; + case ADMIN: + return ADMIN_THEMES; + default: + return Collections.emptySet(); + } + } + + @Override + public boolean hasTheme(String name, Theme.Type type) { + return nameSet(type).contains(name); + } + +} diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider b/project-integrations/aerogear-ups/auth-server/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider new file mode 100755 index 0000000000..89dd8749b0 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/META-INF/services/org.keycloak.freemarker.ThemeProvider @@ -0,0 +1 @@ +org.aerogear.ups.security.AerogearThemeProvider \ No newline at end of file diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/css/account.css b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/css/account.css new file mode 100755 index 0000000000..28b20bbb38 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/css/account.css @@ -0,0 +1,8 @@ +.navbar-title { + background-image: url('../img/logo.png'); + height: 65px; + background-repeat: no-repeat; + width: 203px; + margin: 3px 10px 5px; + text-indent: -99999px; +} \ No newline at end of file diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/img/logo.png b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/resources/img/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..d55812da2460a8d4aa504ccc7fc469a63eaedbcd GIT binary patch literal 6329 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 literal 0 HcmV?d00001 diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/theme.properties b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/theme.properties new file mode 100755 index 0000000000..04feb70eda --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/account/aerogear/theme.properties @@ -0,0 +1,4 @@ +parent=keycloak +import=common/keycloak + +styles= ../patternfly/lib/patternfly/css/patternfly.css ../patternfly/css/account.css ../keycloak/css/account.css css/account.css \ No newline at end of file diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/css/styles.css b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/css/styles.css new file mode 100755 index 0000000000..84300fe265 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/css/styles.css @@ -0,0 +1,45 @@ +@import url("../lib/patternfly/css/patternfly.css"); +@import url("../lib/select2-3.4.1/select2.css"); + +@import url("admin-console.css"); +@import url("tables.css"); +@import url("sprites.css"); + +.navbar-pf { + background-image: url('../img/header-bkgrnd.png'); + border-top: 3px solid rgba(255, 255, 255, 0.15); +} + +.navbar-pf .navbar-primary { + font-size: 13px; + background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,.4) 100%); + background-image: linear-gradient(to bottom, rgba(0,0,0,.1) 0%, rgba(0,0,0,.4) 100%); +} + +.navbar-pf .navbar-header { + border-bottom: 1px solid rgba(255,255,255,.15); +} + +.navbar-pf .navbar-primary li.dropdown.context > a, +.navbar-pf .navbar-primary li.dropdown.context > a:hover, +.navbar-pf .navbar-primary li.dropdown.context.open > a, +.navbar-pf .navbar-primary > .active > a, +.navbar-pf .navbar-primary > .active > a:hover{ + background-color: rgba(0,0,0,0.1); + background-image: -webkit-linear-gradient(top, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%); + background-image: linear-gradient(to bottom, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%); + border-bottom: none; + border-right-color: rgba(255,255,255,0.15); + border-top-color: rgba(255,255,255,0.05); +} + +/* this is what I added */ + +.navbar-title { + background-image: url('../img/logo.png'); + height: 65px; + background-repeat: no-repeat; + width: 203px; + margin: 3px 10px 5px; + text-indent: -99999px; +} diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/img/logo.png b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/resources/img/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..d55812da2460a8d4aa504ccc7fc469a63eaedbcd GIT binary patch literal 6329 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 literal 0 HcmV?d00001 diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/theme.properties b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/theme.properties new file mode 100755 index 0000000000..e328b3f5c6 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/admin/aerogear/theme.properties @@ -0,0 +1,4 @@ +parent=keycloak +import=common/keycloak + +styles= ../keycloak/css/styles.css css/styles.css \ No newline at end of file diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/css/login.css b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/css/login.css new file mode 100755 index 0000000000..3b9207c170 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/css/login.css @@ -0,0 +1,9 @@ +#kc-logo-wrapper { + background-image: url("../img/logo.png"); + background-repeat: no-repeat; + background-position: top right; + + height: 65px; + + margin: 100px; +} diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/img/logo.png b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/resources/img/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..d55812da2460a8d4aa504ccc7fc469a63eaedbcd GIT binary patch literal 6329 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 literal 0 HcmV?d00001 diff --git a/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/theme.properties b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/theme.properties new file mode 100755 index 0000000000..d1b98ed842 --- /dev/null +++ b/project-integrations/aerogear-ups/auth-server/src/main/resources/theme/login/aerogear/theme.properties @@ -0,0 +1,4 @@ +parent=keycloak +import=common/keycloak + +styles= ../patternfly/lib/patternfly/css/patternfly.css ../patternfly/css/login.css ../patternfly/lib/zocial/zocial.css ../keycloak/css/login.css css/login.css \ No newline at end of file diff --git a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json index bcbd7ad8eb..26afcf9713 100755 --- a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json +++ b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json @@ -1,5 +1,5 @@ { - "realm": "demo", + "realm": "aerogear", "enabled": true, "accessTokenLifespan": 3000, "accessCodeLifespan": 10, @@ -7,6 +7,9 @@ "sslNotRequired": true, "registrationAllowed": false, "social": false, + "adminTheme": "aerogear", + "accountTheme": "aerogear", + "loginTheme": "aerogear", "updateProfileOnInitialSocialLogin": false, "requiredCredentials": [ "password" ], "users" : [ @@ -24,7 +27,7 @@ { "username" : "admin", "enabled": true, - "firstName": "Bill", + "firstName": "Meister", "lastName": "Burke", "credentials" : [ { "type" : "password", @@ -59,19 +62,19 @@ ], "scopeMappings": [ { - "client": "customer-portal", - "roles": ["user"] + "client": "unified-push-server", + "roles": ["user", "admin"] } ], "applications": [ { - "name": "customer-portal", + "name": "unified-push-server", "enabled": true, "publicClient": true, - "adminUrl": "/app", - "baseUrl": "/app", + "adminUrl": "/aerogear-ups", + "baseUrl": "/aerogear-ups", "redirectUris": [ - "/app/*" + "/aerogear-ups/*" ] } ], @@ -80,9 +83,13 @@ { "username": "bburke@redhat.com", "roles": ["manage-account"] + }, + { + "username": "admin", + "roles": ["manage-account"] } ], - "demo-realm": [ + "aerogear-realm": [ { "username": "admin", "roles": ["realm-admin"] From ea672e36ae7ec530de2d9d6d03ae5403441b1279 Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Mon, 12 May 2014 19:28:34 -0400 Subject: [PATCH 2/3] rename realm management app --- .../auth-server/src/main/webapp/WEB-INF/testrealm.json | 2 +- .../org/keycloak/services/managers/RealmManager.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json index 26afcf9713..7243991277 100755 --- a/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json +++ b/project-integrations/aerogear-ups/auth-server/src/main/webapp/WEB-INF/testrealm.json @@ -89,7 +89,7 @@ "roles": ["manage-account"] } ], - "aerogear-realm": [ + "realm-management": [ { "username": "admin", "roles": ["realm-admin"] 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 2e229bbcf4..8410776c36 100755 --- a/services/src/main/java/org/keycloak/services/managers/RealmManager.java +++ b/services/src/main/java/org/keycloak/services/managers/RealmManager.java @@ -121,10 +121,16 @@ public class RealmManager { realm.addScopeMapping(adminConsole, adminRole); } - public String getRealmAdminApplicationName(RealmModel realm) { + public String getMasterRealmAdminApplicationName(RealmModel realm) { return realm.getName() + "-realm"; } + public String getRealmAdminApplicationName(RealmModel realm) { + return "realm-management"; + } + + + protected void setupRealmDefaults(RealmModel realm) { // brute force realm.setBruteForceProtected(false); // default settings off for now todo set it on @@ -242,7 +248,7 @@ public class RealmManager { ApplicationManager applicationManager = new ApplicationManager(new RealmManager(identitySession)); - ApplicationModel realmAdminApp = applicationManager.createApplication(adminRealm, getRealmAdminApplicationName(realm)); + ApplicationModel realmAdminApp = applicationManager.createApplication(adminRealm, getMasterRealmAdminApplicationName(realm)); realmAdminApp.setBearerOnly(true); realm.setMasterAdminApp(realmAdminApp); From c560a739b1323b71a8962b9afd53a04e84bc392d Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Mon, 12 May 2014 19:39:29 -0400 Subject: [PATCH 3/3] aerogear readme --- project-integrations/aerogear-ups/README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/project-integrations/aerogear-ups/README.md b/project-integrations/aerogear-ups/README.md index 7a16c26b27..2ae6436bf6 100755 --- a/project-integrations/aerogear-ups/README.md +++ b/project-integrations/aerogear-ups/README.md @@ -2,14 +2,30 @@ Self Bootstrapping Keycloak Server and Application ========================================================== This is an example of bundling two wars: a keycloak server war and application WAR together so that keycloak is bootstrapped out of the -box. +box. The structure of the example is: + +* The aerogear UPS application [http://localhost:8080/aerogear-ups/ups/view.jsp](http://localhost:8080/aerogear-ups/ups/view.jsp) +* The aerogear UPS admin [http://localhost:8080/aerogear-ups/admin/admin.html](http://localhost:8080/aerogear-ups/admin/admin.html) +* The aerogear security admin (keycloak) [http://localhost:8080/auth/admin/aerogear/console/index.html](http://localhost:8080/auth/admin/aerogear/console/index.html) +* The aerogear user account page (keycloak) [http://localhost:8080/auth/realms/aerogear/account](http://localhost:8080/auth/realms/aerogear/account) +* All of these are managed under one realm "aerogear" +* The login page, admin console, and account pages all use the "aerogear" theme + +If you click on any of those URLS, you are brought to a log-in screen. Username: admin Password: admin. You will be asked +to change your password. Once you are logged in, you have SSO to any of those links. + +Notes on implementation: * There is a testrealm.json file that is used to bootstrap the realm in the auth-server/ project * Notice that there is a context-param in auth-server/web.xml called keycloak.import.realm.resources. This sets up the import of the json file * If you open up testrealm.json, notice that all urls are relative. Keycloak will now extrapolate the host and port based on the request if the configured urls are just a path and don't have a schem, host, and port. +* In the auth project, there is a AerogearThemeProvider class. This sets up classloader access to the "aerogear" themes +* In the auth project, there is a UpsSecurityApplication class. The sole purpose of this class is to disable the "master" + realm by deleting the master realm's "admin" user +* In the auth project resources/, there are files there to set up all the themes * In app, there is a BootstrapListener class. This obtains the config context of the adapter and initializes it. -* Notice that this class sets up a relative URL. Also notice that the application is a "public" client. This is so that +* Notice that BootstrapListener class sets up a relative URL. Also notice that the application is a "public" client. This is so that we don't have to query the database for the application's secret. Also notice that the realm key is not set. Keycloak adapter will now query the auth server url for the public key of the realm.