keycloak-memoizeit

Changes

distribution/demo-dist/src/main/providers/README.txt 2(+0 -2)

distribution/demo-dist/src/main/themes/README.txt 3(+0 -3)

distribution/demo-dist/src/main/welcome-content/index.html 32(+0 -32)

distribution/demo-dist/src/main/xslt/standalone.xsl 89(+0 -89)

forms/common-themes/src/main/resources/theme/keycloak/account/resources/img/header-bkgrnd.png 0(+0 -0)

forms/common-themes/src/main/resources/theme/patternfly/account/resources/css/account.css 274(+0 -274)

forms/common-themes/src/main/resources/theme/patternfly/account/theme.properties 4(+0 -4)

Details

diff --git a/distribution/demo-dist/assembly.xml b/distribution/demo-dist/assembly.xml
index 1b59337..b45f881 100755
--- a/distribution/demo-dist/assembly.xml
+++ b/distribution/demo-dist/assembly.xml
@@ -8,27 +8,39 @@
 
     <includeBaseDirectory>true</includeBaseDirectory>
 
-    <dependencySets>
-        <dependencySet>
+    <fileSets>
+        <fileSet>
+            <directory>${project.build.directory}/unpacked/wildfly-${wildfly.version}</directory>
+            <outputDirectory>keycloak</outputDirectory>
+            <excludes>
+                <exclude>**/*.sh</exclude>
+                <exclude>standalone/configuration/standalone.xml</exclude>
+                <exclude>standalone/configuration/standalone-keycloak.xml</exclude>
+            </excludes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/unpacked/wildfly-${wildfly.version}</directory>
+            <outputDirectory>keycloak</outputDirectory>
             <includes>
-                <include>org.keycloak:keycloak-server-dist:zip</include>
+                <include>**/*.sh</include>
             </includes>
-            <outputDirectory></outputDirectory>
-            <unpack>true</unpack>
-        </dependencySet>
-        <dependencySet>
-            <includes>
-                <include>org.keycloak:keycloak-examples-dist:zip</include>
-            </includes>
-            <outputDirectory></outputDirectory>
-            <unpack>true</unpack>
-        </dependencySet>
-        <dependencySet>
-            <includes>
-                <include>org.keycloak:keycloak-docs-dist:zip</include>
-            </includes>
-            <outputDirectory></outputDirectory>
-            <unpack>true</unpack>
-        </dependencySet>
-    </dependencySets>
+            <fileMode>0755</fileMode>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/unpacked/keycloak-docs-${project.version}</directory>
+            <outputDirectory>docs</outputDirectory>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/unpacked/keycloak-examples-${project.version}</directory>
+            <outputDirectory>examples</outputDirectory>
+        </fileSet>
+    </fileSets>
+
+    <files>
+        <file>
+            <source>${project.build.directory}/unpacked/wildfly-${wildfly.version}/standalone/configuration/standalone-keycloak.xml</source>
+            <outputDirectory>keycloak/standalone/configuration</outputDirectory>
+            <destName>standalone.xml</destName>
+        </file>
+    </files>
 </assembly>
diff --git a/distribution/demo-dist/pom.xml b/distribution/demo-dist/pom.xml
index e77212c..73f1622 100755
--- a/distribution/demo-dist/pom.xml
+++ b/distribution/demo-dist/pom.xml
@@ -35,6 +35,81 @@
         <finalName>keycloak-demo-${project.version}</finalName>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>unpack-wildfly</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.wildfly</groupId>
+                                    <artifactId>wildfly-dist</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-server-overlay</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.keycloak</groupId>
+                                    <artifactId>keycloak-server-overlay</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>${project.build.directory}/unpacked/wildfly-${wildfly.version}</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-docs</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.keycloak</groupId>
+                                    <artifactId>keycloak-docs-dist</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>unpack-examples</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>unpack</goal>
+                        </goals>
+                        <configuration>
+                            <artifactItems>
+                                <artifactItem>
+                                    <groupId>org.keycloak</groupId>
+                                    <artifactId>keycloak-examples-dist</artifactId>
+                                    <type>zip</type>
+                                    <outputDirectory>${project.build.directory}/unpacked</outputDirectory>
+                                </artifactItem>
+                            </artifactItems>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <executions>
                     <execution>
diff --git a/docbook/reference/en/en-US/modules/server-installation.xml b/docbook/reference/en/en-US/modules/server-installation.xml
index 0c419b7..6d6061a 100755
--- a/docbook/reference/en/en-US/modules/server-installation.xml
+++ b/docbook/reference/en/en-US/modules/server-installation.xml
@@ -1,95 +1,130 @@
 <chapter id="server-installation">
     <title>Installation and Configuration of Keycloak Server</title>
 
-    <para>
-        The Keycloak Server has two downloadable distributions.
-    </para>
-    <para>
-        <itemizedlist>
-
-            <listitem>
-                keycloak-&project.version;.zip
-            </listitem>
-
-            <listitem>
-                keycloak-overlay-&project.version;.zip
-            </listitem>
-
-        </itemizedlist>
-
-    </para>
-    <section id="server_install">
-        <title>Server Install</title>
-        <para>
-            The
-            <literal>keycloak-&project.version;.zip</literal>
-            is quite large, but contains a complete server (backed by Wildfly)
-            that runs out of the box. The only thing you'll have to enable and configure is SSL. Unzipping it, the
-            directory layout looks
-            something like this:
-        </para>
-
-        <para>
-<programlisting>
-keycloak-&project.version;/
-    bin/
-        standalone.sh
-        standalone.bat
-        standalone/configuration/
-            keycloak-server.json
-            themes/
-    docs/
-</programlisting>
-        </para>
-        <para>
-            The
-            <literal>standalone.sh</literal>
-            or
-            <literal>standalone.bat</literal>
-            script is used to start the server.
-            After executing that, log into the admin console at<ulink
-                url="http://localhost:8080/auth/admin/index.html">
-            http://localhost:8080/auth/admin/index.html</ulink>.
-            Username: <emphasis>admin</emphasis>
-            Password: <emphasis>admin</emphasis>. Keycloak will then prompt you to
-            enter in a new password.
-        </para>
-    </section>
-    <section id="WAR_distribution_installation">
-        <title>Server Overlay Installation</title>
-        <para>
-            The
-            <literal>keycloak-overlay-&project.version;.zip</literal>
-            contains
-            just the bits you need to install keycloak on an existing WildFly 8.2.0.Final installation.
-        </para>
-        <para>
-            The directory structure of this distro looks like this:
-        </para>
-        <para>
-<programlisting>
-   standalone/
-        configuration/
-            keycloak-server.json
-            themes/
-            providers/
-    modules
-    docs/
-</programlisting>
-        </para>
+    <section>
+        <title>Installation</title>
         <para>
-            Unzip this archive into the root of your WildFly installation.
+            Keycloak Server has three downloadable distributions.
         </para>
         <para>
-            After booting up the Wildfly distro, you can then make sure it is installed properly
-            by logging into the admin console at<ulink
-                url="http://localhost:8080/auth/admin/index.html">
-            http://localhost:8080/auth/admin/index.html</ulink>.
-            Username: <emphasis>admin</emphasis>
-            Password: <emphasis>admin</emphasis>. Keycloak will then prompt you to
-            enter in a new password.
+            <itemizedlist>
+                <listitem>
+                    <literal>keycloak-&project.version;.[zip|tar.gz]</literal> - Standalone server
+                </listitem>
+                <listitem>
+                    <literal>keycloak-overlay-&project.version;.[zip|tar.gz]</literal> - Installer for WildFly or JBoss EAP
+                </listitem>
+                <listitem>
+                    <literal>keycloak-demo-&project.version;.[zip|tar.gz]</literal> - Development bundle including WildFly, Keycloak, examples and documentation
+                </listitem>
+            </itemizedlist>
         </para>
+        <section id="server_install">
+            <title>Install Standalone Server</title>
+            <para>
+                For production and for non-JavaEE developers we recommend using the standalone Keycloak server. All you need to
+                do is to download <literal>keycloak-&project.version;.zip</literal> or  <literal>keycloak-&project.version;.tar.gz</literal>,
+                unpackage and start to have a Keycloak server up and running.
+            </para>
+
+            <para>
+                To install first download either the zip or tar.gz and extract. Then start by running either:
+                <programlisting>keycloak-&project.version;/bin/standalone.sh</programlisting>
+                or:
+                <programlisting>keycloak-&project.version;/bin/standalone.bat</programlisting>
+            </para>
+            <para>
+                Once the server is started log into the admin console at
+                <ulink url="http://localhost:8080/auth/admin/index.html">http://localhost:8080/auth/admin/index.html</ulink>
+                (username: <emphasis>admin</emphasis> and password: <emphasis>admin</emphasis>). Keycloak will then prompt you to
+                enter in a new password.
+            </para>
+        </section>
+
+
+        <section id="overlay_install">
+            <title>Install on existing WildFly 8.2.0.Final</title>
+            <para>
+                Keycloak can be installed into an existing WildFly 8.2.0.Final server. To do this download
+                <literal>keycloak-overlay-&project.version;.zip</literal> or  <literal>keycloak-overlay-&project.version;.tar.gz</literal>.
+                Once downloaded extract into the root directory of your WildFly installation. To start WildFly with Keycloak
+                run:
+                <programlisting>keycloak-&project.version;/bin/standalone.sh --server-config=standalone-keycloak.xml</programlisting>
+                or:
+                <programlisting>keycloak-&project.version;/bin/standalone.bat --server-config=standalone-keycloak.xml</programlisting>
+            </para>
+            <para>
+                Once the server is started log into the admin console at
+                <ulink url="http://localhost:8080/auth/admin/index.html">http://localhost:8080/auth/admin/index.html</ulink>
+                (username: <emphasis>admin</emphasis> and password: <emphasis>admin</emphasis>). Keycloak will then prompt you to
+                enter in a new password.
+            </para>
+            <para>
+                To add Keycloak to other sever configurations (standalone.xml, standalone-ha.xml, etc.) open
+                <literal>standalone/configuration/standalone-keycloak.xml</literal> and the configuration you want to add it
+                to, for example <literal>standalone/configuration/standalone.xml</literal>. From <literal>standalone-keycloak.xml</literal>
+                you need to copy 3 elements:
+                <itemizedlist>
+                    <listitem><literal>&lt;extension module="org.keycloak.keycloak-subsystem"/&gt;</literal></listitem>
+                    <listitem><literal>&lt;datasource jndi-name="java:jboss/datasources/KeycloakDS" ...&gt;</literal></listitem>
+                    <listitem><literal>&lt;subsystem xmlns="urn:jboss:domain:security:1.2" ...&gt;</literal></listitem>
+                </itemizedlist>
+            </para>
+        </section>
+        <section>
+            <title>Install on existing EAP 6.4.0.GA</title>
+            <para>
+                Keycloak can be installed into an existing EAP 6.4.0.GA server. To do this download
+                <literal>keycloak-overlay-&project.version;.zip</literal> or  <literal>keycloak-overlay-&project.version;.tar.gz</literal>.
+                Once downloaded extract into the root directory of your EAP installation.
+            </para>
+            <para>
+                To add Keycloak to the a EAP sever configurations (standalone.xml, standalone-ha.xml, etc.) open
+                <literal>standalone/configuration/standalone-keycloak.xml</literal> and the configuration you want to add it
+                to, for example <literal>standalone/configuration/standalone.xml</literal>. From <literal>standalone-keycloak.xml</literal>
+                you need to copy 3 elements:
+                <itemizedlist>
+                    <listitem><literal>&lt;extension module="org.keycloak.keycloak-subsystem"/&gt;</literal></listitem>
+                    <listitem><literal>&lt;datasource jndi-name="java:jboss/datasources/KeycloakDS" ...&gt;</literal></listitem>
+                    <listitem><literal>&lt;subsystem xmlns="urn:jboss:domain:security:1.2" ...&gt;</literal></listitem>
+                </itemizedlist>
+                <note>
+                    <literal>standalone-keycloak.xml</literal> is aimed at WildFly and won't work with EAP so you need to
+                    copy the required configuration
+                </note>
+            </para>
+            <para>
+                Once the server is started log into the admin console at
+                <ulink url="http://localhost:8080/auth/admin/index.html">http://localhost:8080/auth/admin/index.html</ulink>
+                (username: <emphasis>admin</emphasis> and password: <emphasis>admin</emphasis>). Keycloak will then prompt you to
+                enter in a new password.
+            </para>
+        </section>
+        <section>
+            <title id="demo_install">Install Development Bundle</title>
+            <para>
+                The demo bundle contains everything you need to get started with Keycloak including documentation and examples.
+                To install it first download <literal>keycloak-demo-&project.version;.zip</literal> or
+                <literal>keycloak-demo-&project.version;.tar.gz</literal>. Once downloaded extract it inside
+                <literal>keycloak-demo-&project.version;</literal> you'll find <literal>keycloak</literal> which contains
+                a full WildFly 8.2.0.Final server with Keycloak Server and Adapters included. You'll also find <literal>docs</literal>
+                and <literal>examples</literal> which contains everything you need to get started developing applications that use Keycloak.
+            </para>
+            <para>
+                To start WildFly with Keycloak run:
+                <programlisting>keycloak-&project.version;/bin/standalone.sh</programlisting>
+                or:
+                <programlisting>keycloak-&project.version;/bin/standalone.bat</programlisting>
+            </para>
+            <para>
+                Once the server is started log into the admin console at
+                <ulink url="http://localhost:8080/auth/admin/index.html">http://localhost:8080/auth/admin/index.html</ulink>
+                (username: <emphasis>admin</emphasis> and password: <emphasis>admin</emphasis>). Keycloak will then prompt you to
+                enter in a new password.
+            </para>
+        </section>
     </section>
+
     <section>
         <title id="configure-server">Configuring the Server</title>
         <para>
diff --git a/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json b/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
index 17ebb97..56322d3 100755
--- a/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
+++ b/forms/common-themes/src/main/resources/META-INF/keycloak-themes.json
@@ -5,9 +5,5 @@
     }, {
         "name" : "keycloak",
         "types": [ "admin", "account", "login", "common", "email", "welcome" ]
-    },
-        {
-        "name" : "patternfly",
-        "types": [ "account"]
     }]
 }
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/base/admin/resources/templates/kc-tabs-realm.html b/forms/common-themes/src/main/resources/theme/base/admin/resources/templates/kc-tabs-realm.html
index adde837..78be9a3 100644
--- a/forms/common-themes/src/main/resources/theme/base/admin/resources/templates/kc-tabs-realm.html
+++ b/forms/common-themes/src/main/resources/theme/base/admin/resources/templates/kc-tabs-realm.html
@@ -5,7 +5,7 @@
     <li ng-class="{active: path[2] == 'keys-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/keys-settings">Keys</a></li>
     <li ng-class="{active: path[2] == 'smtp-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/smtp-settings">Email</a></li>
     <li ng-class="{active: path[2] == 'theme-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/theme-settings">Themes</a></li>
-    <li ng-class="{active: path[2] == 'cache-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/cache-settings">Cache Config</a></li>
+    <li ng-class="{active: path[2] == 'cache-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/cache-settings">Cache</a></li>
     <li ng-class="{active: path[2] == 'token-settings'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/token-settings">Tokens</a></li>
     <li ng-class="{active: path[2] == 'defense'}" data-ng-show="access.viewRealm"><a href="#/realms/{{realm.realm}}/defense/headers">Security Defenses</a></li>
 </ul>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/keycloak/account/resources/css/account.css b/forms/common-themes/src/main/resources/theme/keycloak/account/resources/css/account.css
index 40f7689..a18d0f2 100644
--- a/forms/common-themes/src/main/resources/theme/keycloak/account/resources/css/account.css
+++ b/forms/common-themes/src/main/resources/theme/keycloak/account/resources/css/account.css
@@ -1,56 +1,274 @@
-.navbar-pf {
-    background-image: url('../img/header-bkgrnd.png');
-    border-top: 3px solid rgba(255, 255, 255, 0.15);
+html {
+    height: 100%;
 }
 
-.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%);
+body {
+    background-color: #F9F9F9;
+    margin: 0;
+    padding: 0;
+    height: 100%;
 }
 
-.navbar-pf .navbar-header {
-    border-bottom: 1px solid rgba(255, 255, 255, .15);
+header .navbar {
+    margin-bottom: 0;
+    min-height: inherit;
 }
 
-.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);
-    border-bottom-color: rgba(0, 0, 0, 0.3);
-    border-right: rgba(0, 0, 0, 0.3);
-    border-top-color: rgba(0, 0, 0, 0.1);
-    font-weight: 600;
-    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%);
-    background-repeat: repeat-x;
+.header .container {
+    position: relative;
 }
 
-.navbar-pf .navbar-primary li.dropdown.context > a:hover,
-.navbar-pf .navbar-primary li.dropdown.context.open > a,
-.navbar-pf .navbar-primary > .active > a:hover {
-    background-color: rgba(0, 0, 0, 0.3);
+.navbar-title {
+    background-image: url('../img/logo.png');
+    height: 25px;
+    background-repeat: no-repeat;
+    width: 103px;
+    margin: 3px 10px 5px;
+    text-indent: -99999px;
 }
 
-.navbar-pf .navbar-primary > .active > a {
-    background-color: rgba(0, 0, 0, 0.1);
-    border-bottom-color: rgba(0, 0, 0, 0.3);
-    border-right: rgba(0, 0, 0, 0.3);
-    border-top-color: rgba(0, 0, 0, 0.1);
-    font-weight: 600;
-    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%);
-    background-repeat: repeat-x;
+.navbar-pf .navbar-utility {
+	right: 20px;
+    top: -34px;
+    font-size: 12px;
 }
 
 .navbar-pf .navbar-utility > li > a {
-    border-left: none;
+    color: #fff !important;
+    padding-bottom: 12px;
+    padding-top: 11px;
+    border-left: medium none;
+}
+
+.container {
+    height: 100%;
+}
+
+.content-area {
+    background-color: #fff;
+    border-color: #CECECE;
+    border-style: solid;
+    border-width: 0 1px;
+    height: 100%;
+    padding: 0 30px;
+}
+
+/* Sidebar */
+
+.bs-sidebar {
+    background-color: #f9f9f9;
+    padding-top: 44px;
+    padding-right: 0;
+    padding-left: 0;
+    z-index: 20;
+}
+.bs-sidebar ul {
+    list-style: none;
+    padding-left: 12px;
+}
+
+.bs-sidebar ul li {
+    margin-bottom: 0.5em;
+    margin-left: -1em;
+}
+.bs-sidebar ul li a {
+    font-size: 14px;
+    padding-left: 25px;
+    color: #4d5258;
+    line-height: 28px;
+    display: block;
+    border-width: 1px 0 1px 1px;
+    border-style: solid;
+    border-color: #f9f9f9;
+}
+.bs-sidebar ul li a:hover,
+.bs-sidebar ul li a:focus {
+    text-decoration: none;
+    color: #777777;
+    border-right: 2px solid #aaa;
+}
+.bs-sidebar ul li.active a {
+    background-color: #c7e5f0;
+    border-color: #56bae0;
+    font-weight: bold;
+    background-image: url(../img/icon-sidebar-active.png);
+    background-repeat: no-repeat;
+    background-position: right center;
+}
+
+.bs-sidebar ul li.active a:hover {
+	border-right: none;
+}
+
+
+.content-area h2 {
+    font-family: "Open Sans", sans-serif;
+    font-weight: 100;
+    font-size: 24px;
+    margin-bottom: 25px;
+    margin-top: 25px;
+}
+
+.subtitle {
+    text-align: right;
+    margin-top: 30px;
+    color: #909090;
+}
+
+.required {
+    color: #CB2915;
+}
+
+
+.alert {
+    margin-top: 30px;
+    margin-bottom: 0;
+}
+
+.feedback-aligner .alert {
+    background-position: 1.27273em center;
+    background-repeat: no-repeat;
+    border-radius: 2px;
+    border-width: 1px;
+    color: #4D5258;
+    display: inline-block;
+    font-size: 1.1em;
+    line-height: 1.4em;
+    margin: 0;
+    padding: 0.909091em 3.63636em;
+    position: relative;
+    text-align: left;
+}
+.alert.alert-success {
+    background-color: #E4F1E1;
+    border-color: #4B9E39;
+}
+.alert.alert-error {
+    background-color: #F8E7E7;
+    border-color: #B91415;
+}
+.alert.alert-warning {
+    background-color: #FEF1E9;
+    border-color: #F17528;
+}
+.alert.alert-info {
+    background-color: #E4F3FA;
+    border-color: #5994B2;
 }
 
-.navbar-pf .navbar-utility > li > a:hover,
-.navbar-pf .navbar-utility > .open > a,
-.navbar-pf .navbar-utility > .open > a:hover {
-    background-color: rgba(0, 0, 0, 0.2);
+.form-horizontal {
+    border-top: 1px solid #E9E8E8;
+    padding-top: 23px;
+}
+
+.form-horizontal .control-label {
+    color: #909090;
+    line-height: 1.4em;
+    padding-top: 5px;
+    position: relative;
+    text-align: right;
+    width: 100%;
+}
+
+.form-group {
+    position: relative;
+}
+
+.control-label + .required {
+    position: absolute;
+    right: -2px;
+    top: 0;
+}
+
+#kc-form-buttons {
+    text-align: right;
+    margin-top: 10px;
+}
+
+#kc-form-buttons .btn-primary {
+    float: right;
+    margin-left: 8px;
+}
+
+/* Authenticator page */
+
+ol {
+    padding-left: 40px;
+}
+
+ol li {
+    font-size: 13px;
+    margin-bottom: 10px;
+    position: relative;
+}
+
+ol li img {
+    margin-top: 15px;
+    width: 180px;
+    margin-bottom: 5px;
+    border: 1px solid #eee;
+}
+
+ol li span {
+    bottom: 80px;
+    left: 200px;
+    position: absolute;
+    font-family: courier, ​monospace;
+    font-size: 13px;
+}
+
+hr + .form-horizontal {
+    border: none;
+    padding-top: 0;
+}
+
+.kc-dropdown{
+    position: relative;
+}
+.kc-dropdown > a{
+    display:block;
+    padding: 11px 10px 12px;
+    line-height: 12px;
+    font-size: 12px;
+    color: #fff !important;
+    text-decoration: none;
+}
+.kc-dropdown > a::after{
+    content: "\2c5";
+    margin-left: 4px;
+}
+.kc-dropdown:hover > a{
+    background-color: rgba(0,0,0,0.2);
+}
+.kc-dropdown ul li a{
+    padding: 1px 11px;
+    font-size: 12px;
+    color: #000 !important;
+    border: 1px solid #fff;
+    text-decoration: none;
+    display:block;
+    line-height: 20px;
+}
+.kc-dropdown ul li a:hover{
+    color: #4d5258;
+    background-color: #d4edfa;
+    border-color: #b3d3e7;
+}
+.kc-dropdown ul{
+    position: absolute;
+    z-index: 2000;
+    list-style:none;
+    display:none;
+    padding: 5px 0px;
+    margin: 0px;
+    background-color: #fff !important;
+    border: 1px solid #b6b6b6;
+    border-radius: 1px;
+    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+    background-clip: padding-box;
+    min-width: 100px;
+}
+.kc-dropdown:hover ul{
+    display:block;
 }
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/keycloak/account/theme.properties b/forms/common-themes/src/main/resources/theme/keycloak/account/theme.properties
old mode 100755
new mode 100644
index 81310f2..971b6c0
--- a/forms/common-themes/src/main/resources/theme/keycloak/account/theme.properties
+++ b/forms/common-themes/src/main/resources/theme/keycloak/account/theme.properties
@@ -1,4 +1,4 @@
-parent=patternfly
-import=common/keycloak
-
-styles= ../patternfly/lib/patternfly/css/patternfly.css ../patternfly/css/account.css css/account.css
\ No newline at end of file
+parent=base
+import=common/keycloak
+
+styles=lib/patternfly/css/patternfly.css css/account.css
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/keycloak/login/resources/css/login.css b/forms/common-themes/src/main/resources/theme/keycloak/login/resources/css/login.css
index 1606825..18d97e0 100644
--- a/forms/common-themes/src/main/resources/theme/keycloak/login/resources/css/login.css
+++ b/forms/common-themes/src/main/resources/theme/keycloak/login/resources/css/login.css
@@ -81,6 +81,7 @@
 }
 
 #kc-header {
+    color: #fff;
     overflow: visible;
     padding-left: 80px;
     white-space: nowrap;