keycloak-uncached

Merge pull request #411 from stianst/master Twitter fix

5/21/2014 5:35:49 AM

Details

diff --git a/distribution/appliance-dist/assembly.xml b/distribution/appliance-dist/assembly.xml
index 957cc36..049062a 100755
--- a/distribution/appliance-dist/assembly.xml
+++ b/distribution/appliance-dist/assembly.xml
@@ -39,6 +39,13 @@
             </excludes>
         </fileSet>
         <fileSet>
+            <directory>${project.build.directory}/unpacked/deployments/auth-server.war/WEB-INF/classes/META-INF</directory>
+            <outputDirectory>keycloak/standalone/configuration</outputDirectory>
+            <includes>
+                <include>keycloak-server.json</include>
+            </includes>
+        </fileSet>
+        <fileSet>
             <directory>${project.build.directory}/unpacked/themes</directory>
             <outputDirectory>keycloak/standalone/configuration/themes</outputDirectory>
         </fileSet>
diff --git a/distribution/war-zip/assembly.xml b/distribution/war-zip/assembly.xml
index 89ed1aa..124b455 100755
--- a/distribution/war-zip/assembly.xml
+++ b/distribution/war-zip/assembly.xml
@@ -19,5 +19,12 @@
             </includes>
             <outputDirectory>deployments</outputDirectory>
         </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/unpacked/deployments/auth-server.war/WEB-INF/classes/META-INF</directory>
+            <outputDirectory>configuration</outputDirectory>
+            <includes>
+                <include>keycloak-server.json</include>
+            </includes>
+        </fileSet>
     </fileSets>
 </assembly>
diff --git a/docbook/reference/en/en-US/modules/social-twitter.xml b/docbook/reference/en/en-US/modules/social-twitter.xml
index 7f7f3fb..66f0d83 100644
--- a/docbook/reference/en/en-US/modules/social-twitter.xml
+++ b/docbook/reference/en/en-US/modules/social-twitter.xml
@@ -33,8 +33,6 @@
         <para>
             Twitter doesn't allow <literal>localhost</literal> in the redirect URI. To test on a local server
             replace <literal>localhost</literal> with <literal>127.0.0.1</literal>.
-            Twitter also restricts connection to TLS/SSL connections only, so you are required to use HTTPS to access
-            Keycloak to enable log in with Twitter.
         </para>
     </tip>
 </section>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/login/patternfly/resources/css/login.css b/forms/common-themes/src/main/resources/theme/login/patternfly/resources/css/login.css
index 354525d..a3fc592 100644
--- a/forms/common-themes/src/main/resources/theme/login/patternfly/resources/css/login.css
+++ b/forms/common-themes/src/main/resources/theme/login/patternfly/resources/css/login.css
@@ -186,6 +186,10 @@ ol#kc-totp-settings li:first-of-type {
     width: 125px;
 }
 
+.zocial:hover {
+    color: #fff !important;
+}
+
 .zocial.facebook,
 .zocial.github,
 .zocial.google,
diff --git a/services/src/main/java/org/keycloak/services/DefaultProviderSessionFactory.java b/services/src/main/java/org/keycloak/services/DefaultProviderSessionFactory.java
index 128c272..1dcf5fe 100755
--- a/services/src/main/java/org/keycloak/services/DefaultProviderSessionFactory.java
+++ b/services/src/main/java/org/keycloak/services/DefaultProviderSessionFactory.java
@@ -33,7 +33,6 @@ public class DefaultProviderSessionFactory implements ProviderSessionFactory {
                 ProviderFactory factory = loadProviderFactory(spi, provider);
                 Config.Scope scope = Config.scope(spi.getName(), provider);
                 factory.init(scope);
-                log.debug("Initialized " + factory.getClass().getName() + " (config = " + scope + ")");
 
                 factories.put(factory.getId(), factory);
 
@@ -42,7 +41,6 @@ public class DefaultProviderSessionFactory implements ProviderSessionFactory {
                 for (ProviderFactory factory : ServiceLoader.load(spi.getProviderFactoryClass())) {
                     Config.Scope scope = Config.scope(spi.getName(), factory.getId());
                     factory.init(scope);
-                    log.debug("Initialized " + factory.getClass().getName() + " (config = " + scope + ")");
 
                     factories.put(factory.getId(), factory);
                 }
diff --git a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
index c677aa8..24d7df8 100755
--- a/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
+++ b/services/src/main/java/org/keycloak/services/resources/KeycloakApplication.java
@@ -108,7 +108,19 @@ public class KeycloakApplication extends Application {
 
     protected void loadConfig() {
         try {
-            URL config = Thread.currentThread().getContextClassLoader().getResource("META-INF/keycloak-server.json");
+            URL config = null;
+
+            String configDir = System.getProperty("jboss.server.config.dir");
+            if (configDir != null) {
+                File f = new File(configDir + File.separator + "keycloak-server.json");
+                if (f.isFile()) {
+                    config = f.toURI().toURL();
+                }
+            }
+
+            if (config == null) {
+                config = Thread.currentThread().getContextClassLoader().getResource("META-INF/keycloak-server.json");
+            }
 
             if (config != null) {
                 JsonNode node = new ObjectMapper().readTree(config);
@@ -116,6 +128,8 @@ public class KeycloakApplication extends Application {
 
                 log.info("Loaded config from " + config);
                 return;
+            } else {
+                log.warn("Config 'keycloak-server.json' not found");
             }
         } catch (IOException e) {
             throw new RuntimeException("Failed to load config", e);
diff --git a/services/src/main/java/org/keycloak/services/util/JsonConfigProvider.java b/services/src/main/java/org/keycloak/services/util/JsonConfigProvider.java
index 714e4db..0eb1cef 100644
--- a/services/src/main/java/org/keycloak/services/util/JsonConfigProvider.java
+++ b/services/src/main/java/org/keycloak/services/util/JsonConfigProvider.java
@@ -74,11 +74,11 @@ public class JsonConfigProvider implements Config.ConfigProvider {
             if (n == null) {
                 return null;
             } else if (n.isArray()) {
-                ArrayList<String> l = new ArrayList<String>();
-                for (JsonNode e : n) {
-                    l.add(StringPropertyReplacer.replaceProperties(e.getTextValue()));
+                String[] a = new String[n.size()];
+                for (int i = 0; i < a.length; i++) {
+                    a[i] = StringPropertyReplacer.replaceProperties(n.get(i).getTextValue());
                 }
-                return (String[]) l.toArray();
+                return a;
             } else {
                return new String[] { StringPropertyReplacer.replaceProperties(n.getTextValue()) };
             }
diff --git a/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterProvider.java b/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterProvider.java
index 10df5cd..f07eb7d 100755
--- a/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterProvider.java
+++ b/social/twitter/src/main/java/org/keycloak/social/twitter/TwitterProvider.java
@@ -48,10 +48,7 @@ public class TwitterProvider implements SocialProvider {
             Twitter twitter = new TwitterFactory().getInstance();
             twitter.setOAuthConsumer(config.getKey(), config.getSecret());
 
-            String redirectUri = config.getCallbackUrl();
-            redirectUri = redirectUri.replace("//localhost", "//127.0.0.1");
-
-            RequestToken requestToken = twitter.getOAuthRequestToken(redirectUri);
+            RequestToken requestToken = twitter.getOAuthRequestToken(config.getCallbackUrl());
 
             return AuthRequest.create(requestToken.getToken(), requestToken.getAuthenticationURL())
                     .setAttribute("token", requestToken.getToken()).setAttribute("tokenSecret", requestToken.getTokenSecret())