Skip to content

Instantly share code, notes, and snippets.

@hkeeler
Created December 7, 2016 19:14
Show Gist options
  • Save hkeeler/dac5b5d94c1f86b8cf837fc83b1e3e79 to your computer and use it in GitHub Desktop.
Save hkeeler/dac5b5d94c1f86b8cf837fc83b1e3e79 to your computer and use it in GitHub Desktop.
Diff of /opt/jboss directory from v2.3.0 to v2.4.0 of jboss/keycloak-postgres
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/bin/client: keycloak-client-registration-cli-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/client: keycloak-client-registration-cli-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/bin/kcreg.bat /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.bat
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/bin/kcreg.bat 2016-10-26 02:58:56.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.bat 2016-11-23 14:27:40.000000000 -0500
@@ -5,4 +5,4 @@
) else (
set DIRNAME=.\
)
-java %KC_OPTS% -cp %DIRNAME%\client\keycloak-client-registration-cli-2.3.0.Final.jar org.keycloak.client.registration.cli.KcRegMain %*
+java %KC_OPTS% -cp %DIRNAME%\client\keycloak-client-registration-cli-2.4.0.Final.jar org.keycloak.client.registration.cli.KcRegMain %*
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/bin/kcreg.sh /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.sh
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/bin/kcreg.sh 2016-10-26 02:58:56.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.sh 2016-11-23 14:27:40.000000000 -0500
@@ -20,4 +20,4 @@
fi
DIRNAME=`dirname "$RESOLVED_NAME"`
-java $KC_OPTS -cp $DIRNAME/client/keycloak-client-registration-cli-2.3.0.Final.jar org.keycloak.client.registration.cli.KcRegMain "$@"
\ No newline at end of file
+java $KC_OPTS -cp $DIRNAME/client/keycloak-client-registration-cli-2.4.0.Final.jar org.keycloak.client.registration.cli.KcRegMain "$@"
\ No newline at end of file
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/domain/configuration/domain.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/domain/configuration/domain.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/domain/configuration/domain.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/domain/configuration/domain.xml 2016-11-23 15:37:56.000000000 -0500
@@ -561,10 +561,10 @@
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
<transport lock-timeout="60000"/>
- <invalidation-cache name="realms" mode="SYNC"/>
- <invalidation-cache name="users" mode="SYNC">
+ <local-cache name="realms"/>
+ <local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
- </invalidation-cache>
+ </local-cache>
<distributed-cache name="sessions" mode="SYNC" owners="1"/>
<distributed-cache name="offlineSessions" mode="SYNC" owners="1"/>
<distributed-cache name="loginFailures" mode="SYNC" owners="1"/>
Binary files /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/base/org/apache/cxf/impl/main/cxf-rt-security-3.1.4-jandex.jar and /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/base/org/apache/cxf/impl/main/cxf-rt-security-3.1.4-jandex.jar differ
Binary files /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/base/org/apache/cxf/impl/main/cxf-rt-ws-security-3.1.4-jandex.jar and /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/base/org/apache/cxf/impl/main/cxf-rt-ws-security-3.1.4-jandex.jar differ
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -20,7 +20,7 @@
<property name="jboss.api" value="private"/>
</properties>
<resources>
- <resource-root path="xstream-1.4.7.jar"/>
+ <resource-root path="xstream-1.4.9.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main: xstream-1.4.7.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/com/thoughtworks/xstream/main: xstream-1.4.9.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/drools/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/drools/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/drools/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/drools/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -31,6 +31,7 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="com.thoughtworks.xstream"/>
<module name="org.antlr" slot="3.5"/>
<module name="org.kie"/>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/jdt/core/compiler/ecj/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/jdt/core/compiler/ecj/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/jdt/core/compiler/ecj/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/jdt/core/compiler/ecj/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -31,6 +31,7 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
</dependencies>
</module>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/sisu/main: guice-servlet-3.2.3.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/sisu/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/sisu/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/sisu/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/eclipse/sisu/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -22,6 +22,7 @@
<resources>
<resource-root path="org.eclipse.sisu.inject-0.3.0.M1.jar"/>
<resource-root path="org.eclipse.sisu.plexus-0.3.0.M1.jar"/>
+ <resource-root path="guice-servlet-3.2.3.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/jboss/as/product/keycloak/dir/META-INF/MANIFEST.MF /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/jboss/as/product/keycloak/dir/META-INF/MANIFEST.MF
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/jboss/as/product/keycloak/dir/META-INF/MANIFEST.MF 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/jboss/as/product/keycloak/dir/META-INF/MANIFEST.MF 2016-11-23 15:37:56.000000000 -0500
@@ -1,3 +1,3 @@
JBoss-Product-Release-Name: Keycloak
-JBoss-Product-Release-Version: 2.3.0.Final
+JBoss-Product-Release-Version: 2.4.0.Final
JBoss-Product-Console-Slot: main
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main: keycloak-authz-policy-common-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main: keycloak-authz-policy-common-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
<property name="jboss.api" value="private"/>
</properties>
<resources>
- <resource-root path="keycloak-authz-policy-common-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-authz-policy-common-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
@@ -29,6 +29,7 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.keycloak.keycloak-services"/>
</dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main: keycloak-authz-policy-drools-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main: keycloak-authz-policy-drools-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -20,7 +20,7 @@
<property name="jboss.api" value="private"/>
</properties>
<resources>
- <resource-root path="keycloak-authz-policy-drools-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-authz-policy-drools-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
@@ -28,6 +28,7 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.keycloak.keycloak-services"/>
<module name="org.kie"/>
</dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main: keycloak-common-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main: keycloak-common-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -16,12 +16,8 @@
~ limitations under the License.
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-common">
- <properties>
- <property name="jboss.api" value="private"/>
- </properties>
-
<resources>
- <resource-root path="keycloak-common-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-common-2.4.0.Final.jar"/>
</resources>
<dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main: keycloak-core-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main: keycloak-core-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -16,12 +16,8 @@
~ limitations under the License.
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-core">
- <properties>
- <property name="jboss.api" value="private"/>
- </properties>
-
<resources>
- <resource-root path="keycloak-core-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-core-2.4.0.Final.jar"/>
</resources>
<dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main: keycloak-js-adapter-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main: keycloak-js-adapter-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,6 +21,6 @@
</properties>
<resources>
- <resource-root path="keycloak-js-adapter-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-js-adapter-2.4.0.Final.jar"/>
</resources>
</module>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main: keycloak-kerberos-federation-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main: keycloak-kerberos-federation-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,13 +21,14 @@
</properties>
<resources>
- <resource-root path="keycloak-kerberos-federation-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-kerberos-federation-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="javax.ws.rs.api"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
<module name="org.jboss.logging"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main: keycloak-ldap-federation-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main: keycloak-ldap-federation-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,13 +21,14 @@
</properties>
<resources>
- <resource-root path="keycloak-ldap-federation-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-ldap-federation-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.keycloak.keycloak-kerberos-federation"/>
<module name="javax.ws.rs.api"/>
<module name="org.jboss.resteasy.resteasy-jaxrs"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main: keycloak-model-infinispan-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main: keycloak-model-infinispan-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,14 +21,18 @@
</properties>
<resources>
- <resource-root path="keycloak-model-infinispan-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-model-infinispan-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.infinispan"/>
+ <module name="org.infinispan.commons"/>
+ <module name="org.infinispan.cachestore.remote"/>
+ <module name="org.infinispan.client.hotrod"/>
<module name="org.jboss.logging"/>
<module name="javax.api"/>
</dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main: keycloak-model-jpa-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main: keycloak-model-jpa-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-model-jpa-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-model-jpa-2.4.0.Final.jar"/>
</resources>
<dependencies>
@@ -29,6 +29,7 @@
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="javax.persistence.api"/>
<module name="org.jboss.logging"/>
<module name="org.liquibase"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main: keycloak-model-mongo-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main: keycloak-model-mongo-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-model-mongo-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-model-mongo-2.4.0.Final.jar"/>
</resources>
<dependencies>
@@ -29,6 +29,7 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-services"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.mongodb.mongo-java-driver"/>
<module name="org.jboss.logging"/>
<module name="javax.api"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main: keycloak-saml-core-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main: keycloak-saml-core-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-saml-core-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-saml-core-2.4.0.Final.jar"/>
</resources>
<dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main: keycloak-saml-core-public-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main: keycloak-saml-core-public-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-saml-core-public-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-saml-core-public-2.4.0.Final.jar"/>
</resources>
<dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main: keycloak-server-spi-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main: keycloak-server-spi-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -16,12 +16,8 @@
~ limitations under the License.
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-server-spi">
- <properties>
- <property name="jboss.api" value="private"/>
- </properties>
-
<resources>
- <resource-root path="keycloak-server-spi-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-server-spi-2.4.0.Final.jar"/>
</resources>
<dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak: keycloak-server-spi-private
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main: keycloak-services-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main: keycloak-services-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-services-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-services-2.4.0.Final.jar"/>
</resources>
<dependencies>
@@ -30,8 +30,9 @@
<module name="org.keycloak.keycloak-js-adapter" services="import"/>
<module name="org.keycloak.keycloak-kerberos-federation" services="import"/>
<module name="org.keycloak.keycloak-ldap-federation" services="import"/>
- <module name="org.keycloak.keycloak-sssd-federation" services="import"/>
+ <module name="org.keycloak.keycloak-sssd-federation" optional="true" services="import"/>
<module name="org.keycloak.keycloak-server-spi" services="import"/>
+ <module name="org.keycloak.keycloak-server-spi-private" services="import"/>
<module name="org.keycloak.keycloak-model-jpa" services="import"/>
<module name="org.keycloak.keycloak-model-mongo" services="import"/>
<module name="org.keycloak.keycloak-model-infinispan" services="import"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main: keycloak-sssd-federation-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main: keycloak-sssd-federation-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,12 +21,14 @@
</properties>
<resources>
- <resource-root path="keycloak-sssd-federation-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-sssd-federation-2.4.0.Final.jar"/>
+ <resource-root path="/usr/share/java/jna.jar"/>
</resources>
<dependencies>
<module name="org.jboss.logging"/>
<module name="org.keycloak.keycloak-core" />
<module name="org.keycloak.keycloak-server-spi" />
+ <module name="org.keycloak.keycloak-server-spi-private"/>
</dependencies>
</module>
\ No newline at end of file
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main: keycloak-wildfly-adduser-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main: keycloak-wildfly-adduser-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -23,13 +23,14 @@
</properties>
<resources>
- <resource-root path="keycloak-wildfly-adduser-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-adduser-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.jboss.aesh"/>
<module name="org.jboss.as.domain-management"/>
<module name="com.fasterxml.jackson.core.jackson-core"/>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main: keycloak-wildfly-extensions-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main: keycloak-wildfly-extensions-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -21,13 +21,14 @@
</properties>
<resources>
- <resource-root path="keycloak-wildfly-extensions-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-extensions-2.4.0.Final.jar"/>
</resources>
<dependencies>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.keycloak.keycloak-services"/>
<module name="org.jboss.modules"/>
</dependencies>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main: keycloak-wildfly-server-subsystem-2.3.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main: keycloak-wildfly-server-subsystem-2.4.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main/module.xml 2016-10-26 04:17:47.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -24,7 +24,7 @@
<resources>
<resource-root path="."/>
- <resource-root path="keycloak-wildfly-server-subsystem-2.3.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-server-subsystem-2.4.0.Final.jar"/>
</resources>
<dependencies>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/kie/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/kie/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/kie/main/module.xml 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/kie/main/module.xml 2016-11-23 15:37:56.000000000 -0500
@@ -32,11 +32,13 @@
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="org.slf4j"/>
<module name="org.apache.commons.logging"/>
<module name="org.keycloak.keycloak-core"/>
<module name="org.keycloak.keycloak-common"/>
<module name="org.keycloak.keycloak-server-spi"/>
+ <module name="org.keycloak.keycloak-server-spi-private"/>
<module name="com.sun.xml.bind"/>
<module name="com.thoughtworks.xstream"/>
<module name="org.apache.ant"/>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml 2016-10-26 05:59:25.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml 2016-11-23 17:31:42.000000000 -0500
@@ -247,10 +247,10 @@
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
<transport lock-timeout="60000"/>
- <invalidation-cache name="realms" mode="SYNC"/>
- <invalidation-cache name="users" mode="SYNC">
+ <local-cache name="realms"/>
+ <local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
- </invalidation-cache>
+ </local-cache>
<distributed-cache name="sessions" mode="SYNC" owners="1"/>
<distributed-cache name="offlineSessions" mode="SYNC" owners="1"/>
<distributed-cache name="loginFailures" mode="SYNC" owners="1"/>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid 2016-12-07 12:39:06.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid 2016-12-07 12:39:15.000000000 -0500
@@ -1 +1 @@
-1206bbfb-1c9d-430d-817e-530a57b2db0a
+3770eb40-99e3-4e17-b5ad-007de82e9329
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/log/server.log /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/log/server.log
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/standalone/log/server.log 2016-12-07 12:39:11.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/log/server.log 2016-12-07 12:39:22.000000000 -0500
@@ -1,7 +1,7 @@
-2016-12-07 17:39:06,094 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
-2016-12-07 17:39:06,383 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
-2016-12-07 17:39:06,447 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: Keycloak 2.3.0.Final (WildFly Core 2.0.10.Final) starting
-2016-12-07 17:39:06,449 DEBUG [org.jboss.as.config] (MSC service thread 1-2) Configured system properties:
+2016-12-07 17:39:15,713 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
+2016-12-07 17:39:15,984 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
+2016-12-07 17:39:16,054 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: Keycloak 2.4.0.Final (WildFly Core 2.0.10.Final) starting
+2016-12-07 17:39:16,056 DEBUG [org.jboss.as.config] (MSC service thread 1-2) Configured system properties:
[Standalone] =
awt.toolkit = sun.awt.X11.XToolkit
file.encoding = ANSI_X3.4-1968
@@ -12,14 +12,14 @@
java.awt.printerjob = sun.print.PSPrinterJob
java.class.path = /opt/jboss/keycloak/jboss-modules.jar
java.class.version = 52.0
- java.endorsed.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/endorsed
- java.ext.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
- java.home = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre
+ java.endorsed.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/endorsed
+ java.ext.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
+ java.home = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre
java.io.tmpdir = /tmp
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.net.preferIPv4Stack = true
java.runtime.name = OpenJDK Runtime Environment
- java.runtime.version = 1.8.0_101-b13
+ java.runtime.version = 1.8.0_111-b15
java.specification.name = Java Platform API Specification
java.specification.vendor = Oracle Corporation
java.specification.version = 1.8
@@ -27,14 +27,14 @@
java.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
- java.version = 1.8.0_101
+ java.version = 1.8.0_111
java.vm.info = mixed mode
java.vm.name = OpenJDK 64-Bit Server VM
java.vm.specification.name = Java Virtual Machine Specification
java.vm.specification.vendor = Oracle Corporation
java.vm.specification.version = 1.8
java.vm.vendor = Oracle Corporation
- java.vm.version = 25.101-b13
+ java.vm.version = 25.111-b15
javax.management.builder.initial = org.jboss.as.jmx.PluggableMBeanServerBuilder
javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory
javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory
@@ -47,17 +47,17 @@
javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory
jboss.bind.address = 0.0.0.0
jboss.home.dir = /opt/jboss/keycloak
- jboss.host.name = f18a35edb6de
+ jboss.host.name = 4f5978873998
jboss.modules.dir = /opt/jboss/keycloak/modules
jboss.modules.system.pkgs = org.jboss.byteman
- jboss.node.name = f18a35edb6de
- jboss.qualified.host.name = f18a35edb6de
+ jboss.node.name = 4f5978873998
+ jboss.qualified.host.name = 4f5978873998
jboss.server.base.dir = /opt/jboss/keycloak/standalone
jboss.server.config.dir = /opt/jboss/keycloak/standalone/configuration
jboss.server.data.dir = /opt/jboss/keycloak/standalone/data
jboss.server.deploy.dir = /opt/jboss/keycloak/standalone/data/content
jboss.server.log.dir = /opt/jboss/keycloak/standalone/log
- jboss.server.name = f18a35edb6de
+ jboss.server.name = 4f5978873998
jboss.server.persist.config = true
jboss.server.temp.dir = /opt/jboss/keycloak/standalone/tmp
line.separator =
@@ -72,8 +72,8 @@
os.version = 4.4.27-boot2docker
path.separator = :
sun.arch.data.model = 64
- sun.boot.class.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/classes
- sun.boot.library.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.101-3.b13.el7_2.x86_64/jre/lib/amd64
+ sun.boot.class.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/classes
+ sun.boot.library.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/lib/amd64
sun.cpu.endian = little
sun.cpu.isalist =
sun.io.unicode.encoding = UnicodeLittle
@@ -88,44 +88,44 @@
user.language = en
user.name = jboss
user.timezone = UTC
-2016-12-07 17:39:06,449 DEBUG [org.jboss.as.config] (MSC service thread 1-2) VM Arguments: -D[Standalone] -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties
-2016-12-07 17:39:08,105 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
-2016-12-07 17:39:08,140 INFO [org.xnio] (MSC service thread 1-1) XNIO version 3.3.4.Final
-2016-12-07 17:39:08,160 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.3.4.Final
-2016-12-07 17:39:08,238 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) WFLYCLINF0001: Activating Infinispan subsystem.
-2016-12-07 17:39:08,245 INFO [org.wildfly.extension.io] (ServerService Thread Pool -- 31) WFLYIO001: Worker 'default' has auto-configured to 2 core threads with 16 task threads based on your 1 available processors
-2016-12-07 17:39:08,282 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 38) WFLYJSF0007: Activated the following JSF Implementations: [main]
-2016-12-07 17:39:08,298 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 40) WFLYNAM0001: Activating Naming Subsystem
-2016-12-07 17:39:08,308 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
-2016-12-07 17:39:08,334 INFO [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
-2016-12-07 17:39:08,397 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
-2016-12-07 17:39:08,399 WARN [org.jboss.as.txn] (ServerService Thread Pool -- 45) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique.
-2016-12-07 17:39:08,442 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) WFLYSEC0002: Activating Security Subsystem
-2016-12-07 17:39:08,457 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0003: Undertow 1.3.15.Final starting
-2016-12-07 17:39:08,468 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.18.Final
-2016-12-07 17:39:08,490 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = h2
-2016-12-07 17:39:08,507 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = postgresql
-2016-12-07 17:39:08,509 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
-2016-12-07 17:39:08,519 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.3.15.Final starting
-2016-12-07 17:39:08,653 INFO [org.jboss.as.naming] (MSC service thread 1-1) WFLYNAM0003: Starting Naming Service
-2016-12-07 17:39:08,663 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0014: Creating file handler for path '/opt/jboss/keycloak/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
-2016-12-07 17:39:08,671 INFO [org.jboss.as.mail.extension] (MSC service thread 1-2) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
-2016-12-07 17:39:08,841 INFO [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 4 (per class), which is derived from the number of CPUs on this host.
-2016-12-07 17:39:08,842 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 16 (per class), which is derived from thread worker pool sizing.
-2016-12-07 17:39:08,862 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
-2016-12-07 17:39:09,036 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
-2016-12-07 17:39:09,037 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
-2016-12-07 17:39:09,404 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/KeycloakDS]
-2016-12-07 17:39:09,400 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
-2016-12-07 17:39:10,028 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-1) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
-2016-12-07 17:39:10,022 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-2) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
-2016-12-07 17:39:10,164 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
-2016-12-07 17:39:10,229 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
-2016-12-07 17:39:11,671 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 49) WFLYCLINF0002: Started users cache from keycloak container
-2016-12-07 17:39:11,685 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 53) WFLYCLINF0002: Started work cache from keycloak container
-2016-12-07 17:39:11,686 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 54) WFLYCLINF0002: Started offlineSessions cache from keycloak container
-2016-12-07 17:39:11,686 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 48) WFLYCLINF0002: Started realms cache from keycloak container
-2016-12-07 17:39:11,686 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 55) WFLYCLINF0002: Started loginFailures cache from keycloak container
-2016-12-07 17:39:11,686 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 50) WFLYCLINF0002: Started keys cache from keycloak container
-2016-12-07 17:39:11,687 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 51) WFLYCLINF0002: Started authorization cache from keycloak container
-2016-12-07 17:39:11,687 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 52) WFLYCLINF0002: Started sessions cache from keycloak container
+2016-12-07 17:39:16,056 DEBUG [org.jboss.as.config] (MSC service thread 1-2) VM Arguments: -D[Standalone] -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/jboss/keycloak/standalone/log/server.log -Dlogging.configuration=file:/opt/jboss/keycloak/standalone/configuration/logging.properties
+2016-12-07 17:39:17,596 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
+2016-12-07 17:39:17,638 INFO [org.xnio] (MSC service thread 1-1) XNIO version 3.3.4.Final
+2016-12-07 17:39:17,649 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.3.4.Final
+2016-12-07 17:39:17,723 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.18.Final
+2016-12-07 17:39:17,787 INFO [org.wildfly.extension.io] (ServerService Thread Pool -- 31) WFLYIO001: Worker 'default' has auto-configured to 2 core threads with 16 task threads based on your 1 available processors
+2016-12-07 17:39:17,788 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) WFLYCLINF0001: Activating Infinispan subsystem.
+2016-12-07 17:39:17,844 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 40) WFLYNAM0001: Activating Naming Subsystem
+2016-12-07 17:39:17,846 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 38) WFLYJSF0007: Activated the following JSF Implementations: [main]
+2016-12-07 17:39:17,918 INFO [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
+2016-12-07 17:39:17,927 INFO [org.jboss.as.naming] (MSC service thread 1-2) WFLYNAM0003: Starting Naming Service
+2016-12-07 17:39:17,932 INFO [org.jboss.as.mail.extension] (MSC service thread 1-2) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
+2016-12-07 17:39:17,963 WARN [org.jboss.as.txn] (ServerService Thread Pool -- 45) WFLYTX0013: Node identifier property is set to the default value. Please make sure it is unique.
+2016-12-07 17:39:18,012 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) WFLYSEC0002: Activating Security Subsystem
+2016-12-07 17:39:18,024 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
+2016-12-07 17:39:18,033 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
+2016-12-07 17:39:18,043 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0018: Started Driver service with driver-name = h2
+2016-12-07 17:39:18,055 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
+2016-12-07 17:39:18,086 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.3.15.Final starting
+2016-12-07 17:39:18,087 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0003: Undertow 1.3.15.Final starting
+2016-12-07 17:39:18,184 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = postgresql
+2016-12-07 17:39:18,324 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) WFLYEJB0481: Strict pool slsb-strict-max-pool is using a max instance size of 16 (per class), which is derived from thread worker pool sizing.
+2016-12-07 17:39:18,329 INFO [org.jboss.as.ejb3] (MSC service thread 1-1) WFLYEJB0482: Strict pool mdb-strict-max-pool is using a max instance size of 4 (per class), which is derived from the number of CPUs on this host.
+2016-12-07 17:39:18,369 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0014: Creating file handler for path '/opt/jboss/keycloak/welcome-content' with options [directory-listing: 'false', follow-symlink: 'false', case-sensitive: 'true', safe-symlink-paths: '[]']
+2016-12-07 17:39:18,433 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0012: Started server default-server.
+2016-12-07 17:39:18,459 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
+2016-12-07 17:39:18,599 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
+2016-12-07 17:39:18,766 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
+2016-12-07 17:39:18,767 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/KeycloakDS]
+2016-12-07 17:39:18,838 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
+2016-12-07 17:39:18,837 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
+2016-12-07 17:39:19,127 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-1) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
+2016-12-07 17:39:20,044 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 48) WFLYCLINF0002: Started users cache from keycloak container
+2016-12-07 17:39:20,046 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 55) WFLYCLINF0002: Started keys cache from keycloak container
+2016-12-07 17:39:20,060 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 53) WFLYCLINF0002: Started work cache from keycloak container
+2016-12-07 17:39:20,061 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 52) WFLYCLINF0002: Started authorization cache from keycloak container
+2016-12-07 17:39:20,061 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 51) WFLYCLINF0002: Started sessions cache from keycloak container
+2016-12-07 17:39:20,061 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 50) WFLYCLINF0002: Started loginFailures cache from keycloak container
+2016-12-07 17:39:20,062 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 54) WFLYCLINF0002: Started offlineSessions cache from keycloak container
+2016-12-07 17:39:20,062 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 49) WFLYCLINF0002: Started realms cache from keycloak container
+2016-12-07 17:39:22,793 INFO [org.keycloak.services] (ServerService Thread Pool -- 48) KC-SERVICES0001: Loading config from standalone.xml or domain.xml
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/account/totp.ftl /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/account/totp.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/account/totp.ftl 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/account/totp.ftl 2016-11-23 15:37:56.000000000 -0500
@@ -2,66 +2,66 @@
<@layout.mainLayout active='totp' bodyClass='totp'; section>
<#if totp.enabled>
- <h2>${msg("authenticatorTitle")}</h2>
+<h2>${msg("authenticatorTitle")}</h2>
- <table class="table table-bordered table-striped">
- <thead
- <tr>
- <th colspan="2">${msg("configureAuthenticators")}</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="provider">${msg("mobile")}</td>
- <td class="action">
- <a id="remove-mobile" href="${url.totpRemoveUrl}"><i class="pficon pficon-delete"></i></a>
+<table class="table table-bordered table-striped">
+ <thead
+ <tr>
+ <th colspan="2">${msg("configureAuthenticators")}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="provider">${msg("mobile")}</td>
+ <td class="action">
+ <a id="remove-mobile" href="${url.totpRemoveUrl}"><i class="pficon pficon-delete"></i></a>
</td>
</tr>
- </tbody>
- </table>
+ </tbody>
+ </table>
<#else>
- <h2>${msg("authenticatorTitle")}</h2>
+<h2>${msg("authenticatorTitle")}</h2>
- <hr/>
+<hr/>
- <ol>
- <li>
- <p>${msg("totpStep1")}</p>
- </li>
- <li>
- <p>${msg("totpStep2")}</p>
- <img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"><br/>
- <span class="code">${totp.totpSecretEncoded}</span>
- </li>
- <li>
- <p>${msg("totpStep3")}</p>
- </li>
- </ol>
-
- <hr/>
-
- <form action="${url.totpUrl}" class="form-horizontal" method="post">
- <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker?html}">
- <div class="form-group">
- <div class="col-sm-2 col-md-2">
- <label for="totp" class="control-label">${msg("authenticatorCode")}</label>
- </div>
+<ol>
+ <li>
+ <p>${msg("totpStep1")}</p>
+ </li>
+ <li>
+ <p>${msg("totpStep2")}</p>
+ <p><img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"></p>
+ <p><span class="code">${totp.totpSecretEncoded}</span></p>
+ </li>
+ <li>
+ <p>${msg("totpStep3")}</p>
+ </li>
+</ol>
+
+<hr/>
+
+<form action="${url.totpUrl}" class="form-horizontal" method="post">
+ <input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker?html}">
+ <div class="form-group">
+ <div class="col-sm-2 col-md-2">
+ <label for="totp" class="control-label">${msg("authenticatorCode")}</label>
+ </div>
- <div class="col-sm-10 col-md-10">
- <input type="text" class="form-control" id="totp" name="totp" autocomplete="off" autofocus autocomplete="off">
- <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}" />
- </div>
+ <div class="col-sm-10 col-md-10">
+ <input type="text" class="form-control" id="totp" name="totp" autocomplete="off" autofocus autocomplete="off">
+ <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}" />
</div>
+ </div>
- <div class="form-group">
- <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
- <div class="">
- <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
- <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button>
- </div>
+ <div class="form-group">
+ <div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
+ <div class="">
+ <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
+ <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button>
</div>
</div>
- </form>
+ </div>
+ </form>
</#if>
</@layout.mainLayout>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_en.properties /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_en.properties
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_en.properties 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_en.properties 2016-11-23 15:37:56.000000000 -0500
@@ -209,6 +209,8 @@
include-authnstatement.tooltip=Should a statement specifying the method and timestamp be included in login responses?
sign-documents=Sign Documents
sign-documents.tooltip=Should SAML documents be signed by the realm?
+sign-documents-redirect-enable-key-info-ext=Optimize REDIRECT signing key lookup
+sign-documents-redirect-enable-key-info-ext.tooltip=When signing SAML documents in REDIRECT binding for SP that is secured by Keycloak adapter, should the ID of the signing key be included in SAML protocol message in <Extensions> element? This optimizes validation of the signature as the validating party uses a single key instead of trying every known key for validation.
sign-assertions=Sign Assertions
sign-assertions.tooltip=Should assertions inside SAML documents be signed? This setting isn't needed if document is already being signed.
signature-algorithm=Signature Algorithm
@@ -506,8 +508,8 @@
identity-provider.force-authentication.tooltip=Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.
validate-signature=Validate Signature
saml.validate-signature.tooltip=Enable/disable signature validation of SAML responses.
-validating-x509-certificate=Validating X509 Certificate
-validating-x509-certificate.tooltip=The certificate in PEM format that must be used to check for signatures.
+validating-x509-certificate=Validating X509 Certificates
+validating-x509-certificate.tooltip=The certificate in PEM format that must be used to check for signatures. Multiple certificates can be entered, separated by comma (,).
saml.import-from-url.tooltip=Import metadata from a remote IDP SAML entity descriptor.
social.client-id.tooltip=The client identifier registered with the identity provider.
social.client-secret.tooltip=The client secret registered with the identity provider.
@@ -1178,4 +1180,48 @@
add-keystore=Add Keystore
add-keystore.placeholder=Add keystore...
view=View
-active=Active
\ No newline at end of file
+active=Active
+
+Sunday=Sunday
+Monday=Monday
+Tuesday=Tuesday
+Wednesday=Wednesday
+Thursday=Thursday
+Friday=Friday
+Saturday=Saturday
+
+user-storage-cache-policy=Cache Settings
+userStorage.cachePolicy=Cache Policy
+userStorage.cachePolicy.option.DEFAULT=DEFAULT
+userStorage.cachePolicy.option.EVICT_WEEKLY=EVICT_WEEKLY
+userStorage.cachePolicy.option.EVICT_DAILY=EVICT_DAILY
+userStorage.cachePolicy.option.MAX_LIFESPAN=MAX_LIFESPAN
+userStorage.cachePolicy.option.NO_CACHE=NO_CACHE
+userStorage.cachePolicy.tooltip=Cache Policy for this storage provider. 'DEFAULT' is whatever the default settings are for the global user cache. 'EVICT_DAILY' is a time of day every day that the user cache will be invalidated. 'EVICT_WEEKLY' is a day of the week and time the cache will be invalidated. 'MAX-LIFESPAN' is the time in milliseconds that will be the lifespan of a cache entry.
+userStorage.cachePolicy.evictionDay=Eviction Day
+userStorage.cachePolicy.evictionDay.tooltip=Day of the week the entry will become invalid on
+userStorage.cachePolicy.evictionHour=Eviction Hour
+userStorage.cachePolicy.evictionHour.tooltip=Hour of day the entry will become invalid on.
+userStorage.cachePolicy.evictionMinute=Eviction Minute
+userStorage.cachePolicy.evictionMinute.tooltip=Minute of day the entry will become invalid on.
+userStorage.cachePolicy.maxLifespan=Max Lifespan
+userStorage.cachePolicy.maxLifespan.tooltip=Max lifespan of a user cache entry in milliseconds.
+user-origin-link=Storage Origin
+
+disable=Disable
+disableable-credential-types=Disableable Types
+credentials.disableable.tooltip=List of credential types that you can disable
+disable-credential-types=Disable Credential Types
+credentials.disable.tooltip=Click button to disable selected credential types
+credential-types=Credential Types
+manage-user-password=Manage Password
+disable-credentials=Disable Credentials
+credential-reset-actions=Credential Reset
+ldap-mappers=LDAP Mappers
+create-ldap-mapper=Create LDAP mapper
+
+
+
+
+
+
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_lt.properties /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_lt.properties
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_lt.properties 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_lt.properties 2016-11-23 15:37:56.000000000 -0500
@@ -120,7 +120,7 @@
realm-tab-themes=Temos
realm-tab-cache=Pod\u0117lis
realm-tab-tokens=Raktai
-realm-tab-client-initial-access=Pradiniai prieigos raktai
+realm-tab-client-registration=Klient\u0173 registracija
realm-tab-security-defenses=Saugos priemon\u0117s
realm-tab-general=Bendra informacija
add-realm=Prid\u0117ti srit\u012F
@@ -207,6 +207,8 @@
include-authnstatement.tooltip=Ar prisijungimo b\u016Bdas ir laikas \u0161ur\u0117t\u0173 b\u016Bti \u012Ftraukiami \u012F prisijungimo operacijos atsakym\u0105?
sign-documents=Pasira\u0161yti dokumentus
sign-documents.tooltip=Ar SAML dokumentai turi b\u016Bt\u012F pasira\u0161omi \u0161ios srities?
+sign-documents-redirect-enable-key-info-ext=Optimizuoti REDIRECT pasira\u0161ymo rakto paie\u0161k\u0105
+sign-documents-redirect-enable-key-info-ext.tooltip=Ar privalo b\u016Bti itrauktas pasira\u0161ymo rakto ID \u012F SAML protokolo \u017Einut\u0117s <Extensions> element\u0105 kuomet pasira\u0161omi Keycloak REDIRECT SP s\u0105sajos dokumentai? Tokiu b\u016Bdu tikrinan\u010Dioji pus\u0117 optimizuoja tikrinimo proce\u0105 naudodama tik vien\u0105 rakt\u0105 vietoj to, kad bandyt\u0173 vis\u0173 rakt\u0173 kombinacijas.
sign-assertions=Pasira\u0161yti sprendinius
sign-assertions.tooltip=Ar SAML sprendiniai SAML dokumentuose turi b\u016Bti pasira\u0161omi? \u0160is nustatymas neb\u016Btinas, kuomet naudojamas viso dokumento pasira\u0161ymas.
signature-algorithm=Para\u0161o algoritmas
@@ -432,6 +434,10 @@
identity-provider.store-tokens.tooltip=Jei \u012Fgalinta, tuomet po naudotoj\u0173 prisijungimo, prieigos raktai bus i\u0161saugoti.
stored-tokens-readable=Saugoti raktus skaitomame formate
identity-provider.stored-tokens-readable.tooltip=Jei \u012Fgalinta, tuomet naudotojai gali per\u017Ei\u016Br\u0117ti i\u0161saugotus prieigos raktus. \u012Egalinama broker.read-token rol\u0117.
+disableUserInfo=U\u017Edrausti naudotojo informacijos prieig\u0105
+identity-provider.disableUserInfo.tooltip=Ar u\u017Edrausti prieig\u0105 prie papildomos naudotojo profilio informacijos per User Info paslaug\u0105? Numatyta reik\u0161m\u0117 - naudoti \u0161i\u0105 OIDC paslaug\u0105.
+userIp=Naudoti userIp parametr\u0105
+identity-provider.google-userIp.tooltip=Ar kvie\u010Diant Google naudotojo informacijos paslaug\u0105 naudoti 'userIp' u\u017Eklausos parametr\u0105? Nusta\u010Dius bus naudojamas naudotojo IP adresas. Nustatymas naudingas tuo atveju, jei Google ribot\u0173 u\u017Eklaus\u0173 kiek\u0161 i\u0161 vieno IP adreso.
update-profile-on-first-login=Profilio duomen\u0173 atnaujinimas pirmojo prisijungimo metu
on=On
off=Off
@@ -500,8 +506,8 @@
identity-provider.force-authentication.tooltip=Jei \u012Fgalinta, tuomet tapatyb\u0117s teik\u0117jas privalo autentifikuoti naudotoj\u0105 i\u0161 naujo nepasitikint ankstesniu prisijungimu.
validate-signature=Para\u0161o tikrinimas
saml.validate-signature.tooltip=\u012Ejungti/i\u0161jungti SAML atsakym\u0173 para\u0161o tikrinim\u0105.
-validating-x509-certificate=X509 sertifikatas tikrinimui
-validating-x509-certificate.tooltip=PEM formato sertifikatas, kuris turi b\u016Bti naudojamas para\u0161\u0173 tikrinimui.
+validating-x509-certificate=X509 sertifikatai tikrinimui
+validating-x509-certificate.tooltip=PEM formato sertifikatai, kurie turi b\u016Bti naudojami para\u0161\u0173 tikrinimui. Reik\u0161m\u0117s skiriamos kableliais (,).
saml.import-from-url.tooltip=Importuoti metaduomenis i\u0161 nutolusio IDP SAML subjekto apra\u0161o.
social.client-id.tooltip=Kliento identifikatorius u\u017Eregistruotas tapatyb\u0117s teik\u0117jo sistemoje.
social.client-secret.tooltip=Kliento saugos kodas u\u017Eregistruotas tapatyb\u0117s teik\u0117jo sistemoje.
@@ -532,6 +538,7 @@
created=Sukurta
back=Atgal
initial-access-tokens=Pradiniai prieigos raktai
+initial-access-tokens.tooltip=Pradiniai prieigos raktai naudojami klient\u0173 registracijoms dinaminiu b\u016Bdu. U\u017Eklausos su \u0161iais raktais gali b\u016Bti siun\u010Diami i\u0161 bet kurio serverio.
add-initial-access-tokens=Prid\u0117ti pradin\u012F prieigos rakt\u0105
initial-access-token=Pradinis prieigos raktas
initial-access.copyPaste.tooltip=Nukopijuokite ir \u012Fklijuokite prieigos rakt\u0105 prie\u0161 i\u0161eidami i\u0161 \u0161io puslapio. V\u0117liau negal\u0117site kopijuoti \u0161i\u0173 prieigos rakt\u0173.
@@ -540,15 +547,29 @@
initial-access-token.confirm.text=Pra\u0161ome \u012Fsitikinti, kad nusikopijavote pradinius prieigos raktus nes v\u0117liau prie rakt\u0173 nebegal\u0117site prieiti
no-initial-access-available=N\u0117ra galim\u0173 pradini\u0173 prieigos rak\u0161\u0173
-trusted-hosts-legend=Patikimi kliento registracijos serveriai
-trusted-hosts-legend.tooltip=Serveri\u0173 vardai, kuriais pasitikima kliento registracijos metu. Klient\u0173 registravimo u\u017Eklausos i\u0161 \u0161i\u0173 serveri\u0173 gali b\u016Bti siun\u010Diamos be pradini\u0173 prieigos rakt\u0173. Klient\u0173 registracijos skai\u010Dius ribojamas pagal nurodyt\u0105 kiekvieno serverio limit\u0105.
-no-client-trusted-hosts-available=N\u0117ra galim\u0173 patikim\u0173 serveri\u0173
-add-client-reg-trusted-host=Prid\u0117ti patikim\u0105 server\u012F
-hostname=Serverio vardas
-client-reg-hostname.tooltip=Pilnas serverio vardas arba IP adresas. Klient\u0173 registracijomis su \u0161iuo serverio vardu arba IP adresu bus pasitikima ir leid\u017Eiama nauj\u0173 klient\u0173 registracija.
-client-reg-count.tooltip=Limitas, kiek registravimo u\u017Eklaus\u0173 galima atsi\u0173sti i\u0161 kiekvieno serverio. Limitas bus atkurtas tik po atk\u016Brimo.
-client-reg-remainingCount.tooltip=I\u0161 \u0161io serverio lik\u0119s galim\u0173 registracijos u\u017Eklaus\u0173 skai\u010Dius. Limitas bus atkurtas tik po atk\u016Brimo.
-reset-remaining-count=Atk\u016Brimo limit\u0105
+client-reg-policies=Klient\u0173 registravimo taisykl\u0117s
+client-reg-policy.name.tooltip=Taisykl\u0117s rodomas pavadinimas
+anonymous-policies=Anonimin\u0117s prieigos taisykl\u0117s
+anonymous-policies.tooltip=\u0160ios taisykl\u0117s naudojamos tuomet, kai klient\u0173 registravimo paslauga i\u0161kvie\u010Diama neautentifikuota u\u017Eklausa. T.y. u\u017Eklausa neturi nei pradini\u0173 prieigos rakt\u0173 (Initial Access Token) nei prieigos rakt\u0173 (Bearer Token).
+auth-policies=Autentifikuotos prieigos taisykl\u0117s
+auth-policies.tooltip=\u0160ios taisykl\u0117s naudojamos tuomet, kai klient\u0173 registravimo paslauga i\u0161kvie\u010Diama autentifikuota u\u017Eklausa. T.y. u\u017Eklausa turi pradini\u0173 prieigos rakt\u0173 (Initial Access Token) arba prieigos rakt\u0173 (Bearer Token).
+policy-name=Taisykl\u0117s pavadinimas
+no-client-reg-policies-configured=N\u0117ra klient\u0173 registravimo taisykli\u0173
+trusted-hosts.label=Patikimi serveriai
+trusted-hosts.tooltip=Serveri\u0173 s\u0105ra\u0161as, kuriems suteikiama teis\u0117 kviesti klient\u0173 registravimo paslaug\u0105 (Client Registration Service) ir/arba naudototi \u0161ias reik\u0161mes klient\u0173 URI parametre (Client URI). Galima naudoti serveri\u0173 vardus arba IP adresus. Jei kaip pirmas simbolis naudojamas i\u0161ple\u010Diantis simbolis (pvz '*.example.com') tuomet visas domenas 'example.com' bus patikimas.
+host-sending-registration-request-must-match.label=Klient\u0173 registracijos paslaugos naudotojo serverio vardas turi sutapti
+host-sending-registration-request-must-match.tooltip=Jei \u0161galinta, tuomet visos klient\u0173 registravimo u\u017Eklausos leid\u017Eiamos tik tuo atveju, jei jos buvo i\u0161si\u0173stos i\u0161 to pa\u010Dio patikimo serverio ar domeno.
+client-uris-must-match.label=Klient\u0173 URI turi sutapti
+client-uris-must-match.tooltip=Jei \u012Fgalinta, tuomet visos klient\u0173 nuorodos (nukreipimo nuorodos ir kitos) leid\u017Eiamos tik tuo atveju, jei jos sutampa su patikimu serverio vardu arba domenu.
+allowed-protocol-mappers.label=Leid\u017Eiami protokolo atitikmen\u0173 parink\u0117jai
+allowed-protocol-mappers.tooltip=Nurodykite visus leid\u017Eiamus protokolo atitikmen\u0173 parink\u0117jus. Jei bandoma registruoti klient\u0105, kuris turi protokolo atitikmen\u0173 parink\u0117j\u0105 ne\u0161traukt\u0105 \u0161 leid\u017Eiam\u0173 s\u0105ra\u0161\u0105, tuomet visa registracijos u\u017Eklausa bus atmesta.
+consent-required-for-all-mappers.label=Privalomas vis\u0173 atitikmen\u0173 parink\u0117j\u0173 pritarimas
+consent-required-for-all-mappers.label=Consent Required For Mappers
+consent-required-for-all-mappers.tooltip=Jei \u012Fgalinta, tuomet visi naujai u\u017Eregistruotiems protokolo parink\u0117jams automati\u0161kai \u012Fgalinama consentRequired opcija. Tai rei\u0161kia, kad naudotojas privalo pateikti patvirtinim\u0105. PASTABA: Patvirtinimo ekranas rodomas tik tiems klientams, kuriems \u012Fjungtas consentRequired nustatymas. Da\u017Eniausiai geriausia nustatyti \u0161i\u0105 nuostat\u0105 kartu su consent-required taisykle.
+allowed-client-templates.label=Leid\u017Eiami klient\u0173 \u0161ablonai
+allowed-client-templates.tooltip=Leid\u017Eiam\u0173 kliento \u0161ablon\u0173 s\u0105ra\u0161as, kuriuos galima naudoti naujai registruojamiems klientams. Bandant registruoti klient\u0105 naudojant kliento \u0161ablon\u0105, kurio n\u0117ra s\u0105ra\u0161e bus atmestas. Pradin\u0117 reik\u0161m\u0117 - tu\u0161\u010Dias s\u0105ra\u0161as, t.y. neleid\u017Eiamas nei vienas kliento \u0161ablonas.
+max-clients.label=Mksimalus srities klient\u0173 skai\u010Dius
+max-clients.tooltip=Nauj\u0173 klient\u0173 registracija draud\u017Eiama, jei u\u017Eregistruot\u0173 klient\u0173 skai\u010Dius yra toks pats arba didesnis nei nustatytas limitas.
client-templates=Klient\u0173 \u0161ablonai
client-templates.tooltip=Klient\u0173 \u0161ablonai leid\u017Eia nurodyti bendr\u0105 vis\u0173 klient\u0173 konfig\u016Bracij\u0105
@@ -880,6 +901,8 @@
granted-roles=Suteiktos rol\u0117s
granted-protocol-mappers=Suteiktos protokolo atitikmen\u0173 s\u0105sajos
additional-grants=Papildomai suteikta
+consent-created-date=Sukurta
+consent-last-updated-date=Pask. kart\u0105 atnaujinta
revoke=At\u0161aukti
new-password=Naujas slapta\u017Eodis
password-confirmation=Pakartotas slapta\u017Eodis
@@ -1144,3 +1167,52 @@
authz-evaluation-authorization-data=Atsakymas
authz-evaluation-authorization-data.tooltip=Autorizavimo u\u017Eklausos apdorojimo rezultatas su autorizacijos duomenimis. Rezultatas parodo k\u0105 Keycloak gr\u0105\u017Eina klientui pra\u0161an\u010Diam leidimo. Per\u017Ei\u016Br\u0117kite 'authorization' teigin\u012F su leidimais, kurie buvo suteikti \u0161iai autorizacijos u\u017Eklausai.
authz-show-authorization-data=Rodyti autorizacijos duomenis
+
+kid=KID
+keys=Raktai
+all=Visi
+status=B\u016Bsena
+keystore=Rakt\u0173 saugykla
+keystores=Rakt\u0173 saugyklos
+add-keystore=Prid\u0117ti rakt\u0173 saugykl\u0105
+add-keystore.placeholder=Prid\u0117ti rakt\u0173 saugykl\u0105...
+view=\u017Di\u016Br\u0117ti
+active=Aktyvus
+
+Sunday=Sekmadienis
+Monday=Pirmadienis
+Tuesday=Antradienis
+Wednesday=Tre\u010Diadienis
+Thursday=Ketvirtadienis
+Friday=Penktadienis
+Saturday=\u0160e\u0161tadienis
+
+user-storage-cache-policy=Pod\u0117lio nustatymai
+userStorage.cachePolicy=Pod\u0117lio taisykl\u0117s
+userStorage.cachePolicy.option.DEFAULT=DEFAULT
+userStorage.cachePolicy.option.EVICT_WEEKLY=EVICT_WEEKLY
+userStorage.cachePolicy.option.EVICT_DAILY=EVICT_DAILY
+userStorage.cachePolicy.option.MAX_LIFESPAN=MAX_LIFESPAN
+userStorage.cachePolicy.option.NO_CACHE=NO_CACHE
+userStorage.cachePolicy.tooltip=Saugyklos teik\u0117jo pod\u0117lio nustatymai. 'DEFAULT' naudojami numatytieji globalaus naudotojo pod\u0117lio nustatymai. 'EVICT_DAILY' naudotoj\u0173 pod\u0117lis i\u0161valomas kiekvien\u0105 dien\u0105 numatytuoju laiku. 'EVICT_WEEKLY' naudotoj\u0173 pod\u0117lis i\u0161valomas kart\u0105 \u012F savait\u0119 numatyt\u0105 dien\u0105. 'MAX-LIFESPAN' maksimalus pod\u0117lio \u012Fra\u0161o galiojimo laikas milisekund\u0117mis.
+userStorage.cachePolicy.evictionDay=I\u0161valymo diena
+userStorage.cachePolicy.evictionDay.tooltip=Savait\u0117s diena, kuomet pod\u0117lio \u012Fra\u0161ai taps nebeaktual\u016Bs
+userStorage.cachePolicy.evictionHour=I\u0161valymo valanda
+userStorage.cachePolicy.evictionHour.tooltip=Valanda, kuomet pod\u0117lio \u012Fra\u0161ai taps nebeaktual\u016Bs.
+userStorage.cachePolicy.evictionMinute=I\u0161valymo minut\u0117
+userStorage.cachePolicy.evictionMinute.tooltip=Minut\u0117, kuomet pod\u0117lio \u012Fra\u0161ai taps nebeaktual\u016Bs.
+userStorage.cachePolicy.maxLifespan=Maksimalus galiojimo laikas
+userStorage.cachePolicy.maxLifespan.tooltip=Maksimalus galiojimo laikas milisekund\u0117mis po kurio pod\u0117lio \u012Fra\u0161ai taps nebeaktual\u016Bs.
+user-origin-link=Saugojimo kilm\u0117
+
+disable=I\u0161jungti
+disableable-credential-types=I\u0161jungiami tipai
+credentials.disableable.tooltip=Galim\u0173 i\u0161jungti prisijungimo duomen\u0173 tip\u0173 s\u0105ra\u0161as
+disable-credential-types=I\u0161jungti prisijungimo duomen\u0173 tipus
+credentials.disable.tooltip=Paspauskite mygtuk\u0105 nor\u0117dami i\u0161jungti pa\u017Eym\u0117tus prisijungimo duomen\u0173 tipus
+credential-types=Prisijungimo duomen\u0173 tipai
+manage-user-password=Tvarkyti slapta\u017Eod\u017Eius
+disable-credentials=I\u0161jungti prisijungimo duomenis
+credential-reset-actions=Prisijungimo duomen\u0173 atk\u016Brimas
+ldap-mappers=LDAP atitikmen\u0173 parink\u0117jai
+create-ldap-mapper=Sukurti LDAP atitikmen\u0173 parink\u0117j\u0105
\ No newline at end of file
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js 2016-11-23 15:37:56.000000000 -0500
@@ -1469,6 +1469,26 @@
},
controller : 'RealmSessionStatsCtrl'
})
+ .when('/create/user-storage/:realm/providers/ldap', {
+ templateUrl : resourceUrl + '/partials/user-storage-ldap.html',
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ instance : function() {
+ return {
+
+ };
+ },
+ providerId : function($route) {
+ return $route.current.params.provider;
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
+ }
+ },
+ controller : 'LDAPUserStorageCtrl'
+ })
.when('/create/user-storage/:realm/providers/:provider', {
templateUrl : resourceUrl + '/partials/user-storage-generic.html',
resolve : {
@@ -1489,6 +1509,24 @@
},
controller : 'GenericUserStorageCtrl'
})
+ .when('/realms/:realm/user-storage/providers/ldap/:componentId', {
+ templateUrl : resourceUrl + '/partials/user-storage-ldap.html',
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ instance : function(ComponentLoader) {
+ return ComponentLoader();
+ },
+ providerId : function($route) {
+ return $route.current.params.provider;
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
+ }
+ },
+ controller : 'LDAPUserStorageCtrl'
+ })
.when('/realms/:realm/user-storage/providers/:provider/:componentId', {
templateUrl : resourceUrl + '/partials/user-storage-generic.html',
resolve : {
@@ -1507,6 +1545,60 @@
},
controller : 'GenericUserStorageCtrl'
})
+ .when('/realms/:realm/ldap-mappers/:componentId', {
+ templateUrl : function(params){ return resourceUrl + '/partials/user-storage-ldap-mappers.html'; },
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ provider : function(ComponentLoader) {
+ return ComponentLoader();
+ },
+ mappers : function(ComponentsLoader, $route) {
+ return ComponentsLoader.loadComponents($route.current.params.componentId, 'org.keycloak.storage.ldap.mappers.LDAPStorageMapper');
+ }
+ },
+ controller : 'LDAPMapperListCtrl'
+ })
+ .when('/create/ldap-mappers/:realm/:componentId', {
+ templateUrl : function(params){ return resourceUrl + '/partials/user-storage-ldap-mapper-detail.html'; },
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ provider : function(ComponentLoader) {
+ return ComponentLoader();
+ },
+ mapperTypes : function(SubComponentTypesLoader, $route) {
+ return SubComponentTypesLoader.loadComponents($route.current.params.componentId, 'org.keycloak.storage.ldap.mappers.LDAPStorageMapper');
+ },
+ clients : function(ClientListLoader) {
+ return ClientListLoader();
+ }
+ },
+ controller : 'LDAPMapperCreateCtrl'
+ })
+ .when('/realms/:realm/ldap-mappers/:componentId/mappers/:mapperId', {
+ templateUrl : function(params){ return resourceUrl + '/partials/user-storage-ldap-mapper-detail.html'; },
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ provider : function(ComponentLoader) {
+ return ComponentLoader();
+ },
+ mapperTypes : function(SubComponentTypesLoader, $route) {
+ return SubComponentTypesLoader.loadComponents($route.current.params.componentId, 'org.keycloak.storage.ldap.mappers.LDAPStorageMapper');
+ },
+ mapper : function(LDAPMapperLoader) {
+ return LDAPMapperLoader();
+ },
+ clients : function(ClientListLoader) {
+ return ClientListLoader();
+ }
+ },
+ controller : 'LDAPMapperCtrl'
+ })
.when('/realms/:realm/user-federation', {
templateUrl : resourceUrl + '/partials/user-federation.html',
resolve : {
@@ -2194,6 +2286,8 @@
elem.addClass("btn btn-primary");
elem.attr("type","submit");
elem.bind('click', function() {
+ if ($scope.hasOwnProperty("changed") && !$scope.changed) return;
+
$scope.$apply(function() {
var form = elem.closest('form');
if (form && form.attr('name')) {
@@ -2420,6 +2514,15 @@
}
});
+module.directive('kcTabsLdap', function () {
+ return {
+ scope: true,
+ restrict: 'E',
+ replace: true,
+ templateUrl: resourceUrl + '/templates/kc-tabs-ldap.html'
+ }
+});
+
module.controller('RoleSelectorModalCtrl', function($scope, realm, config, configName, RealmRoles, Client, ClientRole, $modalInstance) {
$scope.selectedRealmRole = {
role: undefined
@@ -2468,7 +2571,7 @@
})
});
-module.controller('ProviderConfigCtrl', function ($modal, $scope) {
+module.controller('ProviderConfigCtrl', function ($modal, $scope, ComponentUtils) {
$scope.fileNames = {};
@@ -2490,18 +2593,17 @@
})
}
- $scope.newValues = [];
+ ComponentUtils.addLastEmptyValueToMultivaluedLists($scope.properties, $scope.config);
$scope.addValueToMultivalued = function(optionName) {
- var valueToPush = $scope.newValues[optionName];
-
- console.log("New value to multivalued: optionName=" + optionName + ", valueToPush=" + valueToPush);
+ var configProperty = $scope.config[optionName];
+ var lastIndex = configProperty.length - 1;
+ var lastValue = configProperty[lastIndex];
+ console.log("Option=" + optionName + ", lastIndex=" + lastIndex + ", lastValue=" + lastValue);
- if (!$scope.config[optionName]) {
- $scope.config[optionName] = [];
+ if (lastValue.length > 0) {
+ configProperty.push('');
}
- $scope.config[optionName].push(valueToPush);
- $scope.newValues[optionName] = "";
}
$scope.deleteValueFromMultivalued = function(optionName, index) {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/clients.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/clients.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/clients.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/clients.js 2016-11-23 15:37:56.000000000 -0500
@@ -860,6 +860,7 @@
$scope.samlAuthnStatement = false;
$scope.samlMultiValuedRoles = false;
$scope.samlServerSignature = false;
+ $scope.samlServerSignatureEnableKeyInfoExtension = false;
$scope.samlAssertionSignature = false;
$scope.samlClientSignature = false;
$scope.samlEncrypt = false;
@@ -908,6 +909,13 @@
}
}
+ if ($scope.client.attributes["saml.server.signature.keyinfo.ext"]) {
+ if ($scope.client.attributes["saml.server.signature.keyinfo.ext"] == "true") {
+ $scope.samlServerSignatureEnableKeyInfoExtension = true;
+ } else {
+ $scope.samlServerSignatureEnableKeyInfoExtension = false;
+ }
+ }
if ($scope.client.attributes["saml.assertion.signature"]) {
if ($scope.client.attributes["saml.assertion.signature"] == "true") {
$scope.samlAssertionSignature = true;
@@ -1115,7 +1123,11 @@
$scope.client.attributes["saml.server.signature"] = "true";
} else {
$scope.client.attributes["saml.server.signature"] = "false";
-
+ }
+ if ($scope.samlServerSignatureEnableKeyInfoExtension == true) {
+ $scope.client.attributes["saml.server.signature.keyinfo.ext"] = "true";
+ } else {
+ $scope.client.attributes["saml.server.signature.keyinfo.ext"] = "false";
}
if ($scope.samlAssertionSignature == true) {
$scope.client.attributes["saml.assertion.signature"] = "true";
@@ -1340,7 +1352,11 @@
}
-
+ $scope.hideRoleSelector = function() {
+ return ($scope.client.useTemplateScope && $scope.template && template.fullScopeAllowed)
+ || (!$scope.template && $scope.client.fullScopeAllowed);
+ }
+
$scope.changeFlag = function() {
Client.update({
realm : realm.realm,
@@ -1550,7 +1566,8 @@
};
});
-module.controller('ClientClusteringNodeCtrl', function($scope, client, Client, ClientClusterNode, realm, $location, $routeParams, Notifications) {
+module.controller('ClientClusteringNodeCtrl', function($scope, client, Client, ClientClusterNode, realm,
+ $location, $routeParams, Notifications, Dialog) {
$scope.client = client;
$scope.realm = realm;
$scope.create = !$routeParams.node;
@@ -1563,9 +1580,11 @@
}
$scope.unregisterNode = function() {
- ClientClusterNode.remove({ realm : realm.realm, client : client.id , node: $scope.node.host }, function() {
- Notifications.success('Node ' + $scope.node.host + ' unregistered successfully.');
- $location.url('/realms/' + realm.realm + '/clients/' + client.id + '/clustering');
+ Dialog.confirmDelete($scope.node.host, 'node', function() {
+ ClientClusterNode.remove({ realm : realm.realm, client : client.id , node: $scope.node.host }, function() {
+ Notifications.success('Node ' + $scope.node.host + ' unregistered successfully.');
+ $location.url('/realms/' + realm.realm + '/clients/' + client.id + '/clustering');
+ });
});
}
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/realm.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/realm.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/realm.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/realm.js 2016-11-23 15:37:56.000000000 -0500
@@ -956,7 +956,7 @@
id: $scope.identityProvider.internalId
}, $scope.identityProvider, function () {
$route.reload();
- Notifications.success("The " + $scope.identityProvider.alias + " provider has been update.");
+ Notifications.success("The " + $scope.identityProvider.alias + " provider has been updated.");
});
}
};
@@ -1112,12 +1112,10 @@
parent: realm.id,
type: 'org.keycloak.keys.KeyProvider'
}, function(data) {
- console.debug(data);
$scope.instances = data;
});
$scope.addProvider = function(provider) {
- console.log('Add provider: ' + provider.id);
$location.url("/create/keys/" + realm.realm + "/providers/" + provider.id);
};
@@ -1159,19 +1157,27 @@
'priority': ["0"]
}
}
+ } else {
+ $scope.instance = angular.copy(instance);
+ }
- if (providerFactory.properties) {
- for (var i = 0; i < providerFactory.properties.length; i++) {
- var configProperty = providerFactory.properties[i];
+ if (providerFactory.properties) {
+ for (var i = 0; i < providerFactory.properties.length; i++) {
+ var configProperty = providerFactory.properties[i];
+ if (!$scope.instance.config[configProperty.name]) {
if (configProperty.defaultValue) {
$scope.instance.config[configProperty.name] = [configProperty.defaultValue];
+ if (!$scope.create) {
+ instance.config[configProperty.name] = [configProperty.defaultValue];
+ }
} else {
$scope.instance.config[configProperty.name] = [''];
+ if (!$scope.create) {
+ instance.config[configProperty.name] = [configProperty.defaultValue];
+ }
}
}
}
- } else {
- $scope.instance = angular.copy(instance);
}
$scope.$watch('instance', function() {
@@ -2385,7 +2391,7 @@
});
-module.controller('ClientRegPolicyDetailCtrl', function($scope, realm, clientRegistrationPolicyProviders, instance, Dialog, Notifications, Components, $route, $location) {
+module.controller('ClientRegPolicyDetailCtrl', function($scope, realm, clientRegistrationPolicyProviders, instance, Dialog, Notifications, Components, ComponentUtils, $route, $location) {
$scope.realm = realm;
$scope.instance = instance;
$scope.providerTypes = clientRegistrationPolicyProviders;
@@ -2402,7 +2408,11 @@
function toDefaultValue(configProperty) {
if (configProperty.type === 'MultivaluedString' || configProperty.type === 'MultivaluedList') {
- return [];
+ if (configProperty.defaultValue) {
+ return configProperty.defaultValue;
+ } else {
+ return [];
+ }
}
if (configProperty.defaultValue) {
@@ -2426,6 +2436,10 @@
}
}
+ if ($scope.providerType.properties) {
+ ComponentUtils.addLastEmptyValueToMultivaluedLists($scope.providerType.properties, $scope.instance.config);
+ }
+
var oldCopy = angular.copy($scope.instance);
$scope.changed = false;
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/users.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/users.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/users.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/users.js 2016-11-23 15:37:56.000000000 -0500
@@ -335,8 +335,9 @@
});
module.controller('UserDetailCtrl', function($scope, realm, user, BruteForceUser, User,
+ Components,
UserFederationInstances, UserImpersonation, RequiredActions,
- $location, Dialog, Notifications) {
+ $location, $http, Dialog, Notifications) {
$scope.realm = realm;
$scope.create = !user.id;
$scope.editUsername = $scope.create || $scope.realm.editUsernameAllowed;
@@ -361,14 +362,39 @@
});
};
if(user.federationLink) {
- console.log("federationLink is not null");
- UserFederationInstances.get({realm : realm.realm, instance: user.federationLink}, function(link) {
- $scope.federationLinkName = link.displayName;
- $scope.federationLink = "#/realms/" + realm.realm + "/user-federation/providers/" + link.providerName + "/" + link.id;
- })
+ console.log("federationLink is not null. It is " + user.federationLink);
+
+ // TODO: This is temporary and should be removed once we remove userFederation SPI. It can be replaced with Components.get below
+ var fedUrl = authUrl + '/admin/realms/' + realm.realm + '/user-federation/instances-with-fallback/' + user.federationLink;
+ $http.get(fedUrl).success(function(data, status, headers, config) {
+ $scope.federationLinkName = data.federationLinkName;
+ $scope.federationLink = data.federationLink;
+ });
+
+ /*
+ if (user.federationLink.startsWith('f:')) {
+ Components.get({realm: realm.realm, componentId: user.federationLink}, function (link) {
+ $scope.federationLinkName = link.name;
+ $scope.federationLink = "#/realms/" + realm.realm + "/user-storage/providers/" + link.providerId + "/" + link.id;
+ });
+ } else {
+ UserFederationInstances.get({realm: realm.realm, instance: user.federationLink}, function (link) {
+ $scope.federationLinkName = link.displayName;
+ $scope.federationLink = "#/realms/" + realm.realm + "/user-federation/providers/" + link.providerName + "/" + link.id;
+ });
+ }*/
+
} else {
console.log("federationLink is null");
}
+ if(user.origin) {
+ Components.get({realm: realm.realm, componentId: user.origin}, function (link) {
+ $scope.originName = link.name;
+ $scope.originLink = "#/realms/" + realm.realm + "/user-storage/providers/" + link.providerId + "/" + link.id;
+ })
+ } else {
+ console.log("origin is null");
+ }
console.log('realm brute force? ' + realm.bruteForceProtected)
$scope.temporarilyDisabled = false;
var isDisabled = function () {
@@ -484,7 +510,7 @@
}
});
-module.controller('UserCredentialsCtrl', function($scope, realm, user, RequiredActions, User, UserExecuteActionsEmail, UserCredentials, Notifications, Dialog) {
+module.controller('UserCredentialsCtrl', function($scope, realm, user, $route, RequiredActions, User, UserExecuteActionsEmail, UserCredentials, Notifications, Dialog) {
console.log('UserCredentialsCtrl');
$scope.realm = realm;
@@ -509,6 +535,9 @@
});
$scope.resetPassword = function() {
+ // hit enter without entering both fields - ignore
+ if (!$scope.passwordAndConfirmPasswordEntered()) return;
+
if ($scope.pwdChange) {
if ($scope.password != $scope.confirmPassword) {
Notifications.error("Password and confirmation does not match.");
@@ -537,18 +566,23 @@
});
};
- $scope.removeTotp = function() {
- Dialog.confirm('Remove totp', 'Are you sure you want to remove the users totp configuration?', function() {
- UserCredentials.removeTotp({ realm: realm.realm, userId: user.id }, { }, function() {
- Notifications.success("The users totp configuration has been removed");
- $scope.user.totp = false;
+ $scope.passwordAndConfirmPasswordEntered = function() {
+ return $scope.password && $scope.confirmPassword;
+ }
+
+ $scope.disableCredentialTypes = function() {
+ Dialog.confirm('Disable credentials', 'Are you sure you want to disable these the users credentials?', function() {
+ UserCredentials.disableCredentialTypes({ realm: realm.realm, userId: user.id }, $scope.disableableCredentialTypes, function() {
+ $route.reload();
+ Notifications.success("Credentials disabled");
}, function() {
- Notifications.error("Failed to remove the users totp configuration");
+ Notifications.error("Failed to disable credentials");
});
});
};
$scope.emailActions = [];
+ $scope.disableableCredentialTypes = [];
$scope.sendExecuteActionsEmail = function() {
if ($scope.changed) {
@@ -609,13 +643,22 @@
for (var i = 0; i < $scope.providers.length; i++) {
$scope.providers[i].isUserFederationProvider = false;
}
+
UserFederationProviders.query({realm: realm.realm}, function(data) {
for (var i = 0; i < data.length; i++) {
data[i].isUserFederationProvider = true;
+
+ var existingProvider = $scope.providers.find(function(provider){ return provider.id == data[i].id });
+ if (existingProvider) {
+ angular.copy(data[i], existingProvider);
+ continue;
+ }
+
$scope.providers.push(data[i]);
}
});
+
$scope.addProvider = function(provider) {
console.log('Add provider: ' + provider.id);
if (provider.isUserFederationProvider) {
@@ -653,6 +696,9 @@
if (instance.isUserFederationProvider) {
return instance.priority;
} else {
+ if (!instance.config['priority']) {
+ console.log('getInstancePriority is undefined');
+ }
return instance.config['priority'][0];
}
}
@@ -740,7 +786,13 @@
if (providerFactory.metadata.synchronizable) {
instance.config['fullSyncPeriod'] = ['-1'];
instance.config['changedSyncPeriod'] = ['-1'];
+
}
+ instance.config['cachePolicy'] = ['DEFAULT'];
+ instance.config['evictionDay'] = [''];
+ instance.config['evictionHour'] = [''];
+ instance.config['evictionMinute'] = [''];
+ instance.config['maxLifespan'] = [''];
if (providerFactory.properties) {
for (var i = 0; i < providerFactory.properties.length; i++) {
@@ -769,16 +821,30 @@
}
}
- /*
- console.log('Manage instance');
- console.log(instance.name);
- console.log(instance.providerId);
- console.log(instance.providerType);
- console.log(instance.parentId);
- for (var k in instance.config) {
- console.log('config[' + k + "] =");
+ if (!instance.config['cachePolicy']) {
+ instance.config['cachePolicy'] = ['DEFAULT'];
+
}
- */
+ if (!instance.config['evictionDay']) {
+ instance.config['evictionDay'] = [''];
+
+ }
+ if (!instance.config['evictionHour']) {
+ instance.config['evictionHour'] = [''];
+
+ }
+ if (!instance.config['evictionMinute']) {
+ instance.config['evictionMinute'] = [''];
+
+ }
+ if (!instance.config['maxLifespan']) {
+ instance.config['maxLifespan'] = [''];
+
+ }
+ if (!instance.config['priority']) {
+ instance.config['priority'] = ['0'];
+ }
+
}
if (providerFactory.metadata.synchronizable) {
if (instance.config && instance.config['importEnabled']) {
@@ -1512,4 +1578,499 @@
});
+module.controller('LDAPUserStorageCtrl', function($scope, $location, Notifications, $route, Dialog, realm,
+ serverInfo, instance, Components, UserStorageSync, RealmLDAPConnectionTester) {
+ console.log('LDAPUserStorageCtrl');
+ var providerId = 'ldap';
+ console.log('providerId: ' + providerId);
+ $scope.create = !instance.providerId;
+ console.log('create: ' + $scope.create);
+ var providers = serverInfo.componentTypes['org.keycloak.storage.UserStorageProvider'];
+ console.log('providers length ' + providers.length);
+ var providerFactory = null;
+ for (var i = 0; i < providers.length; i++) {
+ var p = providers[i];
+ console.log('provider: ' + p.id);
+ if (p.id == providerId) {
+ $scope.providerFactory = p;
+ providerFactory = p;
+ break;
+ }
+
+ }
+
+ $scope.provider = instance;
+ $scope.showSync = false;
+
+ $scope.ldapVendors = [
+ { "id": "ad", "name": "Active Directory" },
+ { "id": "rhds", "name": "Red Hat Directory Server" },
+ { "id": "tivoli", "name": "Tivoli" },
+ { "id": "edirectory", "name": "Novell eDirectory" },
+ { "id": "other", "name": "Other" }
+ ];
+
+ $scope.authTypes = [
+ { "id": "none", "name": "none" },
+ { "id": "simple", "name": "simple" }
+ ];
+
+ $scope.searchScopes = [
+ { "id": "1", "name": "One Level" },
+ { "id": "2", "name": "Subtree" }
+ ];
+
+ $scope.useTruststoreOptions = [
+ { "id": "always", "name": "Always" },
+ { "id": "ldapsOnly", "name": "Only for ldaps" },
+ { "id": "never", "name": "Never" }
+ ];
+
+ var DEFAULT_BATCH_SIZE = "1000";
+
+
+ console.log("providerFactory: " + providerFactory.id);
+
+ function initUserStorageSettings() {
+ if ($scope.create) {
+ instance.name = 'ldap';
+ instance.providerId = 'ldap';
+ instance.providerType = 'org.keycloak.storage.UserStorageProvider';
+ instance.parentId = realm.id;
+ instance.config = {
+
+ };
+ instance.config['priority'] = ["0"];
+
+ $scope.fullSyncEnabled = false;
+ $scope.changedSyncEnabled = false;
+ instance.config['fullSyncPeriod'] = ['-1'];
+ instance.config['changedSyncPeriod'] = ['-1'];
+ instance.config['cachePolicy'] = ['DEFAULT'];
+ instance.config['evictionDay'] = [''];
+ instance.config['evictionHour'] = [''];
+ instance.config['evictionMinute'] = [''];
+ instance.config['maxLifespan'] = [''];
+ instance.config['batchSizeForSync'] = [DEFAULT_BATCH_SIZE];
+
+ if (providerFactory.properties) {
+
+ for (var i = 0; i < providerFactory.properties.length; i++) {
+ var configProperty = providerFactory.properties[i];
+ if (configProperty.defaultValue) {
+ instance.config[configProperty.name] = [configProperty.defaultValue];
+ } else {
+ instance.config[configProperty.name] = [''];
+ }
+
+ }
+ }
+
+
+ } else {
+ $scope.fullSyncEnabled = (instance.config['fullSyncPeriod'] && instance.config['fullSyncPeriod'][0] > 0);
+ $scope.changedSyncEnabled = (instance.config['changedSyncPeriod'] && instance.config['changedSyncPeriod'][0]> 0);
+ if (!instance.config['fullSyncPeriod']) {
+ console.log('setting to -1');
+ instance.config['fullSyncPeriod'] = ['-1'];
+
+ }
+ if (!instance.config['changedSyncPeriod']) {
+ console.log('setting to -1');
+ instance.config['changedSyncPeriod'] = ['-1'];
+
+ }
+ if (!instance.config['cachePolicy']) {
+ instance.config['cachePolicy'] = ['DEFAULT'];
+
+ }
+ if (!instance.config['evictionDay']) {
+ instance.config['evictionDay'] = [''];
+
+ }
+ if (!instance.config['evictionHour']) {
+ instance.config['evictionHour'] = [''];
+
+ }
+ if (!instance.config['evictionMinute']) {
+ instance.config['evictionMinute'] = [''];
+
+ }
+ if (!instance.config['maxLifespan']) {
+ instance.config['maxLifespan'] = [''];
+
+ }
+ if (!instance.config['priority']) {
+ instance.config['priority'] = ['0'];
+ }
+
+ if (providerFactory.properties) {
+
+ for (var i = 0; i < providerFactory.properties.length; i++) {
+ var configProperty = providerFactory.properties[i];
+ if (!instance.config[configProperty.name]) {
+ if (configProperty.defaultValue) {
+ instance.config[configProperty.name] = [configProperty.defaultValue];
+ } else {
+ instance.config[configProperty.name] = [''];
+ }
+ }
+
+ }
+ }
+
+ for (var i=0 ; i<$scope.ldapVendors.length ; i++) {
+ if ($scope.ldapVendors[i].id === instance.config['vendor'][0]) {
+ $scope.vendorName = $scope.ldapVendors[i].name;
+ }
+ };
+
+
+
+ }
+ if (instance.config && instance.config['importEnabled']) {
+ $scope.showSync = instance.config['importEnabled'][0] == 'true';
+ } else {
+ $scope.showSync = true;
+ }
+
+ $scope.changed = false;
+ $scope.lastVendor = instance.config['vendor'][0];
+ }
+
+ initUserStorageSettings();
+ $scope.instance = angular.copy(instance);
+ $scope.realm = realm;
+
+ $scope.$watch('instance', function() {
+ if (!angular.equals($scope.instance, instance)) {
+ $scope.changed = true;
+ }
+
+ if (!angular.equals($scope.instance.config['vendor'][0], $scope.lastVendor)) {
+ console.log("LDAP vendor changed. Previous=" + $scope.lastVendor + " New=" + $scope.instance.config['vendor'][0]);
+ $scope.lastVendor = $scope.instance.config['vendor'][0];
+
+ if ($scope.lastVendor === "ad") {
+ $scope.instance.config['usernameLDAPAttribute'][0] = "cn";
+ $scope.instance.config['userObjectClasses'][0] = "person, organizationalPerson, user";
+ } else {
+ $scope.instance.config['usernameLDAPAttribute'][0] = "uid";
+ $scope.instance.config['userObjectClasses'][0] = "inetOrgPerson, organizationalPerson";
+ }
+
+ $scope.instance.config['rdnLDAPAttribute'][0] = $scope.instance.config['usernameLDAPAttribute'][0];
+
+ var vendorToUUID = {
+ rhds: "nsuniqueid",
+ tivoli: "uniqueidentifier",
+ edirectory: "guid",
+ ad: "objectGUID",
+ other: "entryUUID"
+ };
+ $scope.instance.config['uuidLDAPAttribute'][0] = vendorToUUID[$scope.lastVendor];
+ }
+
+
+ }, true);
+
+ $scope.$watch('fullSyncEnabled', function(newVal, oldVal) {
+ if (oldVal == newVal) {
+ return;
+ }
+
+ $scope.instance.config['fullSyncPeriod'][0] = $scope.fullSyncEnabled ? "604800" : "-1";
+ $scope.changed = true;
+ });
+
+ $scope.$watch('changedSyncEnabled', function(newVal, oldVal) {
+ if (oldVal == newVal) {
+ return;
+ }
+
+ $scope.instance.config['changedSyncPeriod'][0] = $scope.changedSyncEnabled ? "86400" : "-1";
+ $scope.changed = true;
+ });
+
+
+ $scope.save = function() {
+ $scope.changed = false;
+ if (!$scope.instance.config['batchSizeForSync'] || !parseInt($scope.instance.config['batchSizeForSync'][0])) {
+ $scope.instance.config['batchSizeForSync'] = [ DEFAULT_BATCH_SIZE ];
+ } else {
+ $scope.instance.config['batchSizeForSync'][0] = parseInt($scope.instance.config.batchSizeForSync).toString();
+ }
+
+ if ($scope.create) {
+ Components.save({realm: realm.realm}, $scope.instance, function (data, headers) {
+ var l = headers().location;
+ var id = l.substring(l.lastIndexOf("/") + 1);
+
+ $location.url("/realms/" + realm.realm + "/user-storage/providers/" + $scope.instance.providerId + "/" + id);
+ Notifications.success("The provider has been created.");
+ }, function (errorResponse) {
+ if (errorResponse.data && errorResponse.data['error_description']) {
+ Notifications.error(errorResponse.data['error_description']);
+ }
+ });
+ } else {
+ Components.update({realm: realm.realm,
+ componentId: instance.id
+ },
+ $scope.instance, function () {
+ $route.reload();
+ Notifications.success("The provider has been updated.");
+ }, function (errorResponse) {
+ if (errorResponse.data && errorResponse.data['error_description']) {
+ Notifications.error(errorResponse.data['error_description']);
+ }
+ });
+ }
+ };
+
+ $scope.reset = function() {
+ initUserStorageSettings();
+ $scope.instance = angular.copy(instance);
+ };
+
+ $scope.cancel = function() {
+ if ($scope.create) {
+ $location.url("/realms/" + realm.realm + "/user-storage");
+ } else {
+ $route.reload();
+ }
+ };
+
+ $scope.triggerFullSync = function() {
+ console.log('GenericCtrl: triggerFullSync');
+ triggerSync('triggerFullSync');
+ }
+
+ $scope.triggerChangedUsersSync = function() {
+ console.log('GenericCtrl: triggerChangedUsersSync');
+ triggerSync('triggerChangedUsersSync');
+ }
+
+ function triggerSync(action) {
+ UserStorageSync.save({ action: action, realm: $scope.realm.realm, componentId: $scope.instance.id }, {}, function(syncResult) {
+ $route.reload();
+ Notifications.success("Sync of users finished successfully. " + syncResult.status);
+ }, function() {
+ $route.reload();
+ Notifications.error("Error during sync of users");
+ });
+ }
+
+ var initConnectionTest = function(testAction, ldapConfig) {
+ return {
+ action: testAction,
+ realm: $scope.realm.realm,
+ connectionUrl: ldapConfig.connectionUrl,
+ bindDn: ldapConfig.bindDn,
+ bindCredential: ldapConfig.bindCredential,
+ useTruststoreSpi: ldapConfig.useTruststoreSpi
+ };
+ };
+
+ $scope.testConnection = function() {
+ console.log('LDAPCtrl: testConnection');
+ RealmLDAPConnectionTester.get(initConnectionTest("testConnection", $scope.instance.config), function() {
+ Notifications.success("LDAP connection successful.");
+ }, function() {
+ Notifications.error("Error when trying to connect to LDAP. See server.log for details.");
+ });
+ }
+
+ $scope.testAuthentication = function() {
+ console.log('LDAPCtrl: testAuthentication');
+ RealmLDAPConnectionTester.get(initConnectionTest("testAuthentication", $scope.instance.config), function() {
+ Notifications.success("LDAP authentication successful.");
+ }, function() {
+ Notifications.error("LDAP authentication failed. See server.log for details");
+ });
+ }
+
+
+
+});
+
+module.controller('LDAPTabCtrl', function(Dialog, $scope, Current, Notifications, $location) {
+ $scope.removeUserFederation = function() {
+ Dialog.confirmDelete($scope.instance.name, 'ldap provider', function() {
+ $scope.instance.$remove({
+ realm : Current.realm.realm,
+ componentId : $scope.instance.id
+ }, function() {
+ $location.url("/realms/" + Current.realm.realm + "/user-federation");
+ Notifications.success("The provider has been deleted.");
+ });
+ });
+ };
+});
+
+
+module.controller('LDAPMapperListCtrl', function($scope, $location, Notifications, $route, Dialog, realm, provider, mappers) {
+ console.log('LDAPMapperListCtrl');
+
+ $scope.realm = realm;
+ $scope.provider = provider;
+ $scope.instance = provider;
+
+ $scope.mappers = mappers;
+
+});
+
+module.controller('LDAPMapperCtrl', function($scope, $route, realm, provider, mapperTypes, mapper, clients, Components, LDAPMapperSync, Notifications, Dialog, $location) {
+ console.log('LDAPMapperCtrl');
+ $scope.realm = realm;
+ $scope.provider = provider;
+ $scope.clients = clients;
+ $scope.create = false;
+ $scope.changed = false;
+
+ for (var i = 0; i < mapperTypes.length; i++) {
+ console.log('mapper.providerId: ' + mapper.providerId);
+ console.log('mapperTypes[i].id ' + mapperTypes[i].id);
+ if (mapperTypes[i].id == mapper.providerId) {
+ $scope.mapperType = mapperTypes[i];
+ break;
+ }
+ }
+
+ if ($scope.mapperType.properties) {
+
+ for (var i = 0; i < $scope.mapperType.properties.length; i++) {
+ var configProperty = $scope.mapperType.properties[i];
+ if (!mapper.config[configProperty.name]) {
+ if (configProperty.defaultValue) {
+ mapper.config[configProperty.name] = [configProperty.defaultValue];
+ } else {
+ mapper.config[configProperty.name] = [''];
+ }
+ }
+
+ }
+ }
+ $scope.mapper = angular.copy(mapper);
+
+
+ $scope.$watch('mapper', function() {
+ if (!angular.equals($scope.mapper, mapper)) {
+ $scope.changed = true;
+ }
+ }, true);
+
+ $scope.save = function() {
+ Components.update({realm: realm.realm,
+ componentId: mapper.id
+ },
+ $scope.mapper, function () {
+ $route.reload();
+ Notifications.success("The mapper has been updated.");
+ }, function (errorResponse) {
+ if (errorResponse.data && errorResponse.data['error_description']) {
+ Notifications.error(errorResponse.data['error_description']);
+ }
+ });
+ };
+
+ $scope.reset = function() {
+ $scope.mapper = angular.copy(mapper);
+ $scope.changed = false;
+ };
+
+ $scope.remove = function() {
+ Dialog.confirmDelete($scope.mapper.name, 'ldap mapper', function() {
+ Components.remove({
+ realm : realm.realm,
+ componentId : mapper.id
+ }, function() {
+ $location.url("/realms/" + realm.realm + '/ldap-mappers/' + provider.id);
+ Notifications.success("The provider has been deleted.");
+ });
+ });
+ };
+
+ $scope.triggerFedToKeycloakSync = function() {
+ triggerMapperSync("fedToKeycloak")
+ }
+
+ $scope.triggerKeycloakToFedSync = function() {
+ triggerMapperSync("keycloakToFed");
+ }
+
+ function triggerMapperSync(direction) {
+ LDAPMapperSync.save({ direction: direction, realm: realm.realm, parentId: provider.id, mapperId : $scope.mapper.id }, {}, function(syncResult) {
+ Notifications.success("Data synced successfully. " + syncResult.status);
+ }, function(error) {
+ Notifications.error(error.data.errorMessage);
+ });
+ }
+
+});
+
+module.controller('LDAPMapperCreateCtrl', function($scope, realm, provider, mapperTypes, clients, Components, Notifications, Dialog, $location) {
+ console.log('LDAPMapperCreateCtrl');
+ $scope.realm = realm;
+ $scope.provider = provider;
+ $scope.clients = clients;
+ $scope.create = true;
+ $scope.mapper = { config: {}};
+ $scope.mapperTypes = mapperTypes;
+ $scope.mapperType = null;
+ $scope.changed = true;
+
+ $scope.$watch('mapperType', function() {
+ if ($scope.mapperType != null) {
+ $scope.mapper.config = {};
+ if ($scope.mapperType.properties) {
+
+ for (var i = 0; i < $scope.mapperType.properties.length; i++) {
+ var configProperty = $scope.mapperType.properties[i];
+ if (!$scope.mapper.config[configProperty.name]) {
+ if (configProperty.defaultValue) {
+ $scope.mapper.config[configProperty.name] = [configProperty.defaultValue];
+ } else {
+ $scope.mapper.config[configProperty.name] = [''];
+ }
+ }
+
+ }
+ }
+ }
+ }, true);
+
+ $scope.save = function() {
+ if ($scope.mapperType == null) {
+ Notifications.error("You need to select mapper type!");
+ return;
+ }
+
+ $scope.mapper.providerId = $scope.mapperType.id;
+ $scope.mapper.providerType = 'org.keycloak.storage.ldap.mappers.LDAPStorageMapper';
+ $scope.mapper.parentId = provider.id;
+
+ Components.save({realm: realm.realm}, $scope.mapper, function (data, headers) {
+ var l = headers().location;
+ var id = l.substring(l.lastIndexOf("/") + 1);
+
+ $location.url("/realms/" + realm.realm + "/ldap-mappers/" + $scope.mapper.parentId + "/mappers/" + id);
+ Notifications.success("The mapper has been created.");
+ }, function (errorResponse) {
+ if (errorResponse.data && errorResponse.data['error_description']) {
+ Notifications.error(errorResponse.data['error_description']);
+ }
+ });
+ };
+
+ $scope.reset = function() {
+ $location.url("/realms/" + realm.realm + '/ldap-mappers/' + provider.id);
+ };
+
+
+});
+
+
+
+
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js 2016-11-23 15:37:56.000000000 -0500
@@ -143,6 +143,15 @@
});
});
+module.factory('LDAPMapperLoader', function(Loader, Components, $route, $q) {
+ return Loader.get(Components, function() {
+ return {
+ realm : $route.current.params.realm,
+ componentId: $route.current.params.mapperId
+ }
+ });
+});
+
module.factory('ComponentsLoader', function(Loader, Components, $route, $q) {
var componentsLoader = {};
@@ -159,6 +168,22 @@
return componentsLoader;
});
+module.factory('SubComponentTypesLoader', function(Loader, SubComponentTypes, $route, $q) {
+ var componentsLoader = {};
+
+ componentsLoader.loadComponents = function(parent, componentType) {
+ return Loader.query(SubComponentTypes, function() {
+ return {
+ realm : $route.current.params.realm,
+ componentId : parent,
+ type: componentType
+ }
+ })();
+ };
+
+ return componentsLoader;
+});
+
module.factory('UserFederationInstanceLoader', function(Loader, UserFederationInstances, $route, $q) {
return Loader.get(UserFederationInstances, function() {
return {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js 2016-11-23 15:37:56.000000000 -0500
@@ -191,6 +191,48 @@
return notifications;
});
+
+module.factory('ComponentUtils', function() {
+
+ var utils = {};
+
+ utils.addLastEmptyValueToMultivaluedLists = function(properties, config) {
+
+ for (var i=0 ; i<properties.length ; i++) {
+ var prop = properties[i];
+ if (prop.type === 'MultivaluedString') {
+ var configProperty = config[prop.name];
+
+ if (configProperty == null) {
+ configProperty = [];
+ config[prop.name] = configProperty;
+ }
+
+ if (configProperty.length == 0 || configProperty[configProperty.length - 1].length > 0) {
+ configProperty.push('');
+ }
+ }
+ }
+ }
+
+
+ utils.removeLastEmptyValue = function(componentConfig) {
+
+ for (var configPropertyName in componentConfig) {
+ var configVal = componentConfig[configPropertyName];
+ if (configVal && configVal.length > 0) {
+ var lastVal = configVal[configVal.length - 1];
+ if (lastVal === '') {
+ console.log('Remove empty value from config property: ' + configPropertyName);
+ configVal.splice(configVal.length - 1, 1);
+ }
+ }
+ }
+ }
+
+ return utils;
+});
+
module.factory('Realm', function($resource) {
return $resource(authUrl + '/admin/realms/:id', {
id : '@realm'
@@ -489,6 +531,15 @@
}
}).update;
+ credentials.disableCredentialTypes = $resource(authUrl + '/admin/realms/:realm/users/:userId/disable-credential-types', {
+ realm : '@realm',
+ userId : '@userId'
+ }, {
+ update : {
+ method : 'PUT'
+ }
+ }).update;
+
return credentials;
});
@@ -1648,13 +1699,39 @@
});
});
-module.factory('Components', function($resource) {
+module.factory('SubComponentTypes', function($resource) {
+ return $resource(authUrl + '/admin/realms/:realm/components/:componentId/sub-component-types', {
+ realm: '@realm',
+ componentId: '@componentId'
+ });
+});
+
+module.factory('Components', function($resource, ComponentUtils) {
return $resource(authUrl + '/admin/realms/:realm/components/:componentId', {
realm : '@realm',
componentId : '@componentId'
}, {
update : {
- method : 'PUT'
+ method : 'PUT',
+ transformRequest: function(componentInstance) {
+
+ if (componentInstance.config) {
+ ComponentUtils.removeLastEmptyValue(componentInstance.config);
+ }
+
+ return angular.toJson(componentInstance);
+ }
+ },
+ save : {
+ method : 'POST',
+ transformRequest: function(componentInstance) {
+
+ if (componentInstance.config) {
+ ComponentUtils.removeLastEmptyValue(componentInstance.config);
+ }
+
+ return angular.toJson(componentInstance);
+ }
}
});
});
@@ -1672,4 +1749,14 @@
});
});
+module.factory('LDAPMapperSync', function($resource) {
+ return $resource(authUrl + '/admin/realms/:realm/user-storage/:parentId/mappers/:mapperId/sync', {
+ realm : '@realm',
+ componentId : '@componentId',
+ mapperId: '@mapperId'
+ });
+});
+
+
+
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-list.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-list.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-list.html 2016-11-23 15:37:56.000000000 -0500
@@ -23,14 +23,14 @@
</div>
<div class="input-group">
<select class="form-control search" data-ng-model="query.type"
- ng-options="p.type as p.name group by p.group for p in policyProviders track by p.type" data-ng-change="firstPage()">
+ ng-options="p.type as p.name for p in policyProviders track by p.type" data-ng-change="firstPage()">
<option value="" selected ng-click="query.type = ''">{{:: 'authz-all-types' | translate}}</option>
</select>
</div>
</div>
<div class="pull-right">
<select class="form-control" ng-model="policyType"
- ng-options="p.name group by p.group for p in policyProviders track by p.type"
+ ng-options="p.name for p in policyProviders track by p.type"
data-ng-change="addPolicy(policyType);">
<option value="" disabled selected>{{:: 'authz-create-policy' | translate}}...</option>
</select>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-clustering-node.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-clustering-node.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-clustering-node.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-clustering-node.html 2016-11-23 15:37:56.000000000 -0500
@@ -20,10 +20,10 @@
<input ng-disabled="!create" class="form-control" type="text" id="host" name="host" data-ng-model="node.host" required>
</div>
</div>
- <div class="form-group">
+ <div ng-hide="create" class="form-group">
<label class="col-md-2 control-label" for="lastRegistration">{{:: 'last-registration' | translate}}</label>
<div class="col-sm-6">
- <input ng-disabled="true" class="form-control" type="text" id="lastRegistration" name="lastRegistration" data-ng-model="node.lastRegistration">
+ {{node.lastRegistration}}
</div>
</div>
<div class="form-group">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-detail.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-detail.html 2016-11-23 15:37:56.000000000 -0500
@@ -89,7 +89,7 @@
<input ng-model="client.standardFlowEnabled" name="standardFlowEnabled" id="standardFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
</div>
- <div class="form-group" data-ng-show="protocol == 'openid-connect' && client.publicClient && !client.bearerOnly">
+ <div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.bearerOnly">
<label class="col-md-2 control-label" for="implicitFlowEnabled">{{:: 'implicit-flow-enabled' | translate}}</label>
<kc-tooltip>{{:: 'implicit-flow-enabled.tooltip' | translate}}</kc-tooltip>
<div class="col-md-6">
@@ -118,7 +118,7 @@
</div>
</div>
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
- <label class="col-md-2 control-label" for="samlServerSignature">{{:: 'include-authnstatement' | translate}}</label>
+ <label class="col-md-2 control-label" for="samlAuthnStatement">{{:: 'include-authnstatement' | translate}}</label>
<div class="col-sm-6">
<input ng-model="samlAuthnStatement" ng-click="switchChange()" name="samlAuthnStatement" id="samlAuthnStatement" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
@@ -131,6 +131,13 @@
</div>
<kc-tooltip>{{:: 'sign-documents.tooltip' | translate}}</kc-tooltip>
</div>
+ <div class="form-group clearfix block" data-ng-show="protocol == 'saml' && samlServerSignature == true">
+ <label class="col-md-2 control-label" for="samlServerSignatureEnableKeyInfoExtension">{{:: 'sign-documents-redirect-enable-key-info-ext' | translate}}</label>
+ <div class="col-sm-6">
+ <input ng-model="samlServerSignatureEnableKeyInfoExtension" ng-click="switchChange()" name="samlServerSignatureEnableKeyInfoExtension" id="samlServerSignatureEnableKeyInfoExtension" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
+ </div>
+ <kc-tooltip>{{:: 'sign-documents-redirect-enable-key-info-ext.tooltip' | translate}}</kc-tooltip>
+ </div>
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
<label class="col-md-2 control-label" for="samlAssertionSignature">{{:: 'sign-assertions' | translate}}</label>
<div class="col-sm-6">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-scope-mappings.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-scope-mappings.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-scope-mappings.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-scope-mappings.html 2016-11-23 15:37:56.000000000 -0500
@@ -41,7 +41,7 @@
</fieldset>
</form>
- <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-show="!client.fullScopeAllowed" data-ng-hide="client.useTemplateScope && template && template.fullScopeAllowed">
+ <form class="form-horizontal" name="realmForm" novalidate kc-read-only="!access.manageClients" data-ng-hide="hideRoleSelector()">
<div class="form-group">
<label class="col-md-2 control-label" class="control-label">{{:: 'realm-roles' | translate}}</label>
<div class="col-md-10">
@@ -132,6 +132,6 @@
</div>
</div>
</form>
- </div>
+ </div>
<kc-menu></kc-menu>
\ No newline at end of file
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-generic.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-generic.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-generic.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-generic.html 2016-11-23 15:37:56.000000000 -0500
@@ -75,14 +75,14 @@
</fieldset>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
<button kc-save>{{:: 'save' | translate}}</button>
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
</div>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">{{:: 'synchronize-changed-users' | translate}}</button>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-kerberos.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-kerberos.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-kerberos.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-kerberos.html 2016-11-23 15:37:56.000000000 -0500
@@ -91,14 +91,14 @@
</fieldset>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
<button kc-save>{{:: 'save' | translate}}</button>
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
</div>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-ldap.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-ldap.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-ldap.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/federated-ldap.html 2016-11-23 15:37:56.000000000 -0500
@@ -280,14 +280,14 @@
</fieldset>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
<button kc-save>{{:: 'save' | translate}}</button>
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
</div>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed">{{:: 'synchronize-changed-users' | translate}}</button>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-oidc.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-oidc.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-oidc.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-oidc.html 2016-11-23 15:37:56.000000000 -0500
@@ -222,8 +222,11 @@
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
</div>
<kc-tooltip>{{:: 'identity-provider.import-from-url.tooltip' | translate}}</kc-tooltip>
- <div class="col-md-6" data-ng-show="importUrl">
- <button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="importFrom"></label>
+ <div class="col-md-6">
+ <button id="importFrom" type="button" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
</div>
</div>
<div class="form-group" data-ng-show="newIdentityProvider">
@@ -238,8 +241,11 @@
{{files[0].name}}
</span>
</div>
- <div class="col-md-6" data-ng-show="importFile">
- <button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="importFile"></label>
+ <div class="col-md-6" data-ng-show="importFile">
+ <button id="importFile" type="button" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ </div>
</div>
</div>
</fieldset>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-saml.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-saml.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-saml.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-saml.html 2016-11-23 15:37:56.000000000 -0500
@@ -191,8 +191,11 @@
<input class="form-control" id="fromUrl" type="text" ng-model="fromUrl.data">
</div>
<kc-tooltip>{{:: 'saml.import-from-url.tooltip' | translate}}</kc-tooltip>
- <div class="col-sm-4" data-ng-show="importUrl">
- <button type="submit" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ </div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="importFrom"></label>
+ <div class="col-md-6">
+ <button id="importFrom" type="button" data-ng-click="importFrom()" data-ng-show="importUrl" class="btn btn-primary">{{:: 'import' | translate}}</button>
</div>
</div>
<div class="form-group" data-ng-show="newIdentityProvider">
@@ -206,8 +209,11 @@
{{files[0].name}}
</span>
</div>
- <div class="col-sm-4" data-ng-show="importFile">
- <button type="submit" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="importFile"></label>
+ <div class="col-sm-6" data-ng-show="importFile">
+ <button id="importFile" type="button" data-ng-click="uploadFile()" data-ng-show="importFile" class="btn btn-primary">{{:: 'import' | translate}}</button>
+ </div>
</div>
</div>
</fieldset>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-generic.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-generic.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-generic.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-generic.html 2016-11-23 15:37:56.000000000 -0500
@@ -41,19 +41,18 @@
<div class="form-group clearfix">
<label class="col-md-2 control-label" for="consoleDisplayName">{{:: 'console-display-name' | translate}} </label>
<div class="col-md-6">
- <input class="form-control" id="consoleDisplayName" type="text" ng-model="instance.name" placeholder="{{:: 'defaults-to-id' | translate}}">
+ <input required class="form-control" id="consoleDisplayName" type="text" ng-model="instance.name" placeholder="{{:: 'defaults-to-id' | translate}}">
</div>
<kc-tooltip>{{:: 'console-display-name.tooltip' | translate}}</kc-tooltip>
</div>
<kc-component-config realm="realm" config="instance.config" properties="providerFactory.properties"></kc-component-config>
-
</fieldset>
<div class="form-group">
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
- <button kc-save>{{:: 'save' | translate}}</button>
- <button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
+ <button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
+ <button kc-cancel data-ng-disabled="!changed" data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-providers.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-providers.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-providers.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-providers.html 2016-11-23 15:37:56.000000000 -0500
@@ -26,7 +26,7 @@
<table class="table table-striped table-bordered">
<thead>
- <tr ng-show="providers.length > 0 && access.manageUsers">
+ <tr ng-show="providers.length > 0 && access.manageRealm">
<th colspan="6" class="kc-table-actions">
<div class="pull-right">
<div>
@@ -54,7 +54,7 @@
<td>{{instance.providerId}}</td>
<td>{{instance.config['priority'][0]}}</td>
<td class="kc-action-cell" kc-open="/realms/{{realm.realm}}/keys/providers/{{instance.providerId}}/{{instance.id}}">{{:: 'edit' | translate}}</td>
- <td class="kc-action-cell" data-ng-click="removeInstance(instance)">{{:: 'delete' | translate}}</td>
+ <td class="kc-action-cell" ng-show="instances.length > 1" data-ng-click="removeInstance(instance)">{{:: 'delete' | translate}}</td>
</tr>
</tbody>
</table>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-credentials.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-credentials.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-credentials.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-credentials.html 2016-11-23 15:37:56.000000000 -0500
@@ -11,7 +11,8 @@
<input type="password" readonly value="this is not a login form" style="display: none;">
<fieldset class="border-top">
- <div class="form-group">
+ <legend><span class="text">{{:: 'manage-user-password' | translate}}</span></legend>
+ <div class="form-group">
<label class="col-md-2 control-label" for="password">{{:: 'new-password' | translate}} <span class="required" data-ng-show="create">*</span></label>
<div class="col-md-6">
<input class="form-control" type="password" id="password" name="password" data-ng-model="password" required>
@@ -34,41 +35,56 @@
</div>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="password && confirmPassword">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="passwordAndConfirmPasswordEntered()">
<button class="btn btn-danger" type="submit" data-ng-click="resetPassword(true)">{{:: 'reset-password' | translate}}</button>
</div>
</div>
</fieldset>
- <fieldset class="border-top" data-ng-show="user.totp">
- <div class="form-group" data-ng-show="user.totp">
- <label class="col-md-2 control-label">{{:: 'remove-totp' | translate}}</label>
- <div class="col-sm-5" data-ng-show="user.totp">
- <button class="btn btn-danger" type="submit" data-ng-click="removeTotp()" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'credentials.remove-totp.tooltip' | translate}}" tooltip-placement="right">{{:: 'remove-totp' | translate}}</button>
- </div>
- </div>
- </fieldset >
- <fieldset class="border-top" data-ng-show="user.email">
- <div class="form-group clearfix">
- <label class="col-md-2 control-label" for="reqActions">{{:: 'reset-actions' | translate}}</label>
-
- <div class="col-md-6">
- <select ui-select2 id="reqActions" ng-model="emailActions" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
- <option ng-repeat="action in userReqActionList" value="{{action.alias}}">{{action.name}}</option>
- </select>
- </div>
- <kc-tooltip>{{:: 'credentials.reset-actions.tooltip' | translate}}</kc-tooltip>
- </div>
- <div class="form-group clearfix">
- <label class="col-md-2 control-label" for="reqActionsEmail">{{:: 'reset-actions-email' | translate}}</label>
-
- <div class="col-md-6">
- <button id="reqActionsEmail" class="btn btn-default" data-ng-click="sendExecuteActionsEmail()">{{:: 'send-email' | translate}}</button>
- </div>
- <kc-tooltip>{{:: 'credentials.reset-actions-email.tooltip' | translate}}</kc-tooltip>
- </div>
- </fieldset>
- </form>
+ <fieldset class="border-top" data-ng-show="user.disableableCredentialTypes && user.disableableCredentialTypes.length > 0">
+ <legend><span class="text">{{:: 'disable-credentials' | translate}}</span></legend>
+ <div class="form-group clearfix">
+ <label class="col-md-2 control-label" for="credentialTypeList">{{:: 'disableable-credential-types' | translate}}</label>
+
+ <div class="col-md-6">
+ <select ui-select2 id="credentialTypeList" ng-model="disableableCredentialTypes" data-placeholder="{{:: 'select-a-type.placeholder' | translate}}" multiple>
+ <option ng-repeat="credType in user.disableableCredentialTypes" value="{{credType}}">{{credType}}</option>
+ </select>
+ </div>
+ <kc-tooltip>{{:: 'credentials.disableable.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group clearfix">
+ <label class="col-md-2 control-label" for="disableCredentialTypes">{{:: 'disable-credential-types' | translate}}</label>
+
+ <div class="col-md-6">
+ <button type="button" id="disableCredentialTypes" class="btn btn-default" data-ng-click="disableCredentialTypes()">{{:: 'disable' | translate}}</button>
+ </div>
+ <kc-tooltip>{{:: 'credentials.disable.tooltip' | translate}}</kc-tooltip>
+ </div>
+ </fieldset>
+
+ <fieldset class="border-top" data-ng-show="user.email">
+ <legend><span class="text">{{:: 'credential-reset-actions' | translate}}</span></legend>
+ <div class="form-group clearfix">
+ <label class="col-md-2 control-label" for="reqActions">{{:: 'reset-actions' | translate}}</label>
+
+ <div class="col-md-6">
+ <select ui-select2 id="reqActions" ng-model="emailActions" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
+ <option ng-repeat="action in userReqActionList" value="{{action.alias}}">{{action.name}}</option>
+ </select>
+ </div>
+ <kc-tooltip>{{:: 'credentials.reset-actions.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group clearfix">
+ <label class="col-md-2 control-label" for="reqActionsEmail">{{:: 'reset-actions-email' | translate}}</label>
+
+ <div class="col-md-6">
+ <button type="button" id="reqActionsEmail" class="btn btn-default" data-ng-click="sendExecuteActionsEmail()">{{:: 'send-email' | translate}}</button>
+ </div>
+ <kc-tooltip>{{:: 'credentials.reset-actions-email.tooltip' | translate}}</kc-tooltip>
+ </div>
+ </fieldset>
+ </form>
</div>
<kc-menu></kc-menu>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-detail.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-detail.html 2016-11-23 15:37:56.000000000 -0500
@@ -82,6 +82,12 @@
<a href="{{federationLink}}">{{federationLinkName}}</a>
</div>
</div>
+ <div class="form-group clearfix block" data-ng-show="!create && user.origin">
+ <label class="col-md-2 control-label">{{:: 'user-origin-link' | translate}}</label>
+ <div class="col-md-6">
+ <a href="{{originLink}}">{{originName}}</a>
+ </div>
+ </div>
<div class="form-group clearfix block">
<label class="col-md-2 control-label" for="emailVerified">{{:: 'email-verified' | translate}}</label>
<div class="col-md-6">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-federation.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-federation.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-federation.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-federation.html 2016-11-23 15:37:56.000000000 -0500
@@ -13,7 +13,7 @@
<p>Keycloak can federate external user databases. Out of the box we have support for LDAP and Active Directory.</p>
<p>To get started select a provider from the dropdown below:</p>
<div class="blank-slate-pf-main-action">
- <div class="row" data-ng-show="access.manageUsers">
+ <div class="row" data-ng-show="access.manageRealm">
<div class="col-sm-4 col-sm-offset-4">
<div class="form-group">
<select class="form-control" ng-model="selectedProvider"
@@ -29,7 +29,7 @@
<table class="table table-striped table-bordered" data-ng-show="instances && instances.length > 0">
<thead>
- <tr ng-show="providers.length > 0 && access.manageUsers">
+ <tr ng-show="providers.length > 0 && access.manageRealm">
<th colspan="5" class="kc-table-actions">
<div class="pull-right">
<div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-generic.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-generic.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-generic.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-generic.html 2016-11-23 15:37:56.000000000 -0500
@@ -68,15 +68,163 @@
</fieldset>
+ <fieldset>
+ <legend><span class="text">{{:: 'user-storage-cache-policy' | translate}}</span></legend>
+ <div class="form-group">
+ <label for="cachePolicy" class="col-md-2 control-label">{{:: 'userStorage.cachePolicy' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="cachePolicy" ng-model="instance.config['cachePolicy'][0]" class="form-control">
+ <option value="DEFAULT">{{:: 'userStorage.cachePolicy.option.DEFAULT' | translate}}</option>
+ <option value="EVICT_DAILY">{{:: 'userStorage.cachePolicy.option.EVICT_DAILY' | translate}}</option>
+ <option value="EVICT_WEEKLY">{{:: 'userStorage.cachePolicy.option.EVICT_WEEKLY' | translate}}</option>
+ <option value="MAX_LIFESPAN">{{:: 'userStorage.cachePolicy.option.MAX_LIFESPAN' | translate}}</option>
+ <option value="NO_CACHE">{{:: 'userStorage.cachePolicy.option.NO_CACHE' | translate}}</option>
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'userStorage.cachePolicy.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group" data-ng-show="instance.config['cachePolicy'][0] == 'EVICT_WEEKLY'">
+ <label for="evictionDay" class="col-md-2 control-label">{{:: 'userStorage.evictionDay' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="evictionDay" ng-model="instance.config['evictionDay'][0]" class="form-control">
+ <option value="1">{{:: 'Sunday' | translate}}</option>
+ <option value="2">{{:: 'Monday' | translate}}</option>
+ <option value="3">{{:: 'Tuesday' | translate}}</option>
+ <option value="4">{{:: 'Wednesday' | translate}}</option>
+ <option value="5">{{:: 'Thursday' | translate}}</option>
+ <option value="6">{{:: 'Friday' | translate}}</option>
+ <option value="7">{{:: 'Saturday' | translate}}</option>
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'userStorage.cachePolicy.evictionDay.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group clearfix" data-ng-show="instance.config['cachePolicy'][0] == 'EVICT_WEEKLY' || instance.config['cachePolicy'][0] == 'EVICT_DAILY'">
+ <label class="col-md-2 control-label" for="evictionHour">{{:: 'userStorage.cachePolicy.evictionHour' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="evictionHour" ng-model="instance.config['evictionHour'][0]" class="form-control">
+ <option value="0">00</option>
+ <option value="1">01</option>
+ <option value="2">02</option>
+ <option value="3">03</option>
+ <option value="4">04</option>
+ <option value="5">05</option>
+ <option value="6">06</option>
+ <option value="7">07</option>
+ <option value="8">08</option>
+ <option value="9">09</option>
+ <option value="10">10</option>
+ <option value="11">11</option>
+ <option value="12">12</option>
+ <option value="13">13</option>
+ <option value="14">14</option>
+ <option value="15">15</option>
+ <option value="16">16</option>
+ <option value="17">17</option>
+ <option value="18">18</option>
+ <option value="19">19</option>
+ <option value="20">20</option>
+ <option value="21">21</option>
+ <option value="22">22</option>
+ <option value="23">23</option>
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'userStorage.cachePolicy.evictionHour.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group clearfix" data-ng-show="instance.config['cachePolicy'][0] == 'EVICT_WEEKLY' || instance.config['cachePolicy'][0] == 'EVICT_DAILY'">
+ <label class="col-md-2 control-label" for="evictionMinute">{{:: 'userStorage.cachePolicy.evictionMinute' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="evictionMinute" ng-model="instance.config['evictionMinute'][0]" class="form-control">
+ <option value="0">00</option>
+ <option value="1">01</option>
+ <option value="2">02</option>
+ <option value="3">03</option>
+ <option value="4">04</option>
+ <option value="5">05</option>
+ <option value="6">06</option>
+ <option value="7">07</option>
+ <option value="8">08</option>
+ <option value="9">09</option>
+ <option value="10">10</option>
+ <option value="11">11</option>
+ <option value="12">12</option>
+ <option value="13">13</option>
+ <option value="14">14</option>
+ <option value="15">15</option>
+ <option value="16">16</option>
+ <option value="17">17</option>
+ <option value="18">18</option>
+ <option value="19">19</option>
+ <option value="20">20</option>
+ <option value="21">21</option>
+ <option value="22">22</option>
+ <option value="23">23</option>
+ <option value="24">24</option>
+ <option value="25">25</option>
+ <option value="26">26</option>
+ <option value="27">27</option>
+ <option value="28">28</option>
+ <option value="29">29</option>
+ <option value="30">30</option>
+ <option value="31">31</option>
+ <option value="32">32</option>
+ <option value="33">33</option>
+ <option value="34">34</option>
+ <option value="35">35</option>
+ <option value="36">36</option>
+ <option value="37">37</option>
+ <option value="38">38</option>
+ <option value="39">39</option>
+ <option value="40">40</option>
+ <option value="41">41</option>
+ <option value="42">42</option>
+ <option value="43">43</option>
+ <option value="44">44</option>
+ <option value="45">45</option>
+ <option value="46">46</option>
+ <option value="47">47</option>
+ <option value="48">48</option>
+ <option value="49">49</option>
+ <option value="50">50</option>
+ <option value="51">51</option>
+ <option value="52">52</option>
+ <option value="53">53</option>
+ <option value="54">54</option>
+ <option value="55">55</option>
+ <option value="56">56</option>
+ <option value="57">57</option>
+ <option value="58">58</option>
+ <option value="59">59</option>
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'userStorage.cachePolicy.evictionMinute.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group clearfix" data-ng-show="instance.config['cachePolicy'][0] == 'MAX_LIFESPAN'">
+ <label class="col-md-2 control-label" for="maxLifespan">{{:: 'userStorage.cachePolicy.maxLifespan' | translate}}</label>
+ <div class="col-md-6">
+ <input class="form-control" type="text" ng-model="instance.config['maxLifespan'][0]" id="maxLifespan" />
+ </div>
+ <kc-tooltip>{{:: 'userStorage.cachePolicy.maxLifespan.tooltip' | translate}}</kc-tooltip>
+ </div>
+ </fieldset>
+
+
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageRealm">
<button kc-save>{{:: 'save' | translate}}</button>
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
</div>
<div class="form-group">
- <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageUsers">
+ <div class="col-md-10 col-md-offset-2" data-ng-show="!create && access.manageRealm">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
<button class="btn btn-primary" data-ng-click="triggerChangedUsersSync()" data-ng-hide="changed || !showSync">{{:: 'synchronize-changed-users' | translate}}</button>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: user-storage-ldap-mapper-detail.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: user-storage-ldap-mappers.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: user-storage-ldap.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage.html 2016-11-23 15:37:56.000000000 -0500
@@ -5,7 +5,7 @@
<table class="table table-striped table-bordered">
<thead>
- <tr ng-show="providers.length > 0 && access.manageUsers">
+ <tr ng-show="providers.length > 0 && access.manageRealm">
<th colspan="5" class="kc-table-actions">
<div class="pull-right">
<div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-component-config.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-component-config.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-component-config.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-component-config.html 2016-11-23 15:37:56.000000000 -0500
@@ -2,36 +2,36 @@
<div data-ng-repeat="option in properties" class="form-group" data-ng-controller="ProviderConfigCtrl">
<label class="col-md-2 control-label">{{:: option.label | translate}}</label>
- <div class="col-md-6" data-ng-show="option.type == 'String'">
+ <div class="col-md-6" data-ng-if="option.type == 'String'">
<input class="form-control" type="text" data-ng-model="config[ option.name ][0]" >
</div>
- <div class="col-md-6" data-ng-show="option.type == 'Password'">
+ <div class="col-md-6" data-ng-if="option.type == 'Password'">
<input class="form-control" type="password" data-ng-model="config[ option.name ][0]" >
</div>
- <div class="col-md-6" data-ng-show="option.type == 'boolean'">
+ <div class="col-md-6" data-ng-if="option.type == 'boolean'">
<input ng-model="config[ option.name ][0]" value="'true'" id="option.name" name="option.name" onoffswitchstring on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
- <div class="col-md-6" data-ng-show="option.type == 'List'">
+ <div class="col-md-6" data-ng-if="option.type == 'List'">
<select ng-model="config[ option.name ][0]" ng-options="data for data in option.options">
<option value="" selected> {{:: 'selectOne' | translate}} </option>
</select>
</div>
- <div class="col-md-6" data-ng-show="option.type == 'MultivaluedList'">
+ <div class="col-md-6" data-ng-if="option.type == 'MultivaluedList'">
<select ui-select2 data-ng-model="config[ option.name ]" data-placeholder="{{:: 'selectMultiple' | translate}}..." multiple>
<option ng-repeat="val in option.options" value="{{val}}" ng-selected="true">{{val}}</option>
</select>
</div>
- <div class="col-md-6" data-ng-show="option.type == 'Role'">
+ <div class="col-md-6" data-ng-if="option.type == 'Role'">
<div class="row">
<div class="col-md-8">
<input class="form-control" type="text" data-ng-model="config[ option.name ][0]" >
</div>
<div class="col-md-2">
- <button type="submit" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
+ <button type="button" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
</div>
</div>
</div>
- <div class="col-md-4" data-ng-show="option.type == 'ClientList'">
+ <div class="col-md-4" data-ng-if="option.type == 'ClientList'">
<select ng-model="config[ option.name ][0]" ng-options="client.clientId as client.clientId for client in clients">
<option value="" selected> {{:: 'selectOne' | translate}} </option>
</select>
@@ -54,17 +54,15 @@
<div class="col-sm-6" data-ng-if="option.type == 'MultivaluedString'">
<div class="input-group" ng-repeat="(i, currentOption) in config[option.name] track by $index">
<input class="form-control" ng-model="config[option.name][i]">
- <div class="input-group-btn">
+ <div class="input-group-btn" data-ng-if="$index < config[option.name].length - 1">
<button class="btn btn-default" type="button" data-ng-click="deleteValueFromMultivalued(option.name, $index)"><span class="fa fa-minus"></span></button>
</div>
- </div>
- <div class="input-group">
- <input class="form-control" ng-model="newValues[option.name]">
- <div class="input-group-btn">
- <button class="btn btn-default" type="button" data-ng-click="newValues[option.name].length > 0 && addValueToMultivalued(option.name)"><span class="fa fa-plus"></span></button>
+ <div class="input-group-btn" data-ng-if="$index === config[option.name].length - 1">
+ <button class="btn btn-default" type="button" data-ng-click="addValueToMultivalued(option.name)"><span class="fa fa-plus"></span></button>
</div>
</div>
+
</div>
<kc-tooltip>{{:: option.helpText | translate}}</kc-tooltip>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-menu.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-menu.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-menu.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-menu.html 2016-11-23 15:37:56.000000000 -0500
@@ -22,8 +22,10 @@
<li data-ng-show="access.viewRealm" data-ng-class="((!path[2]
|| path[2] == 'required-credentials'
|| path[2] == 'login-settings'
+ || path[2] == 'keys'
|| path[2] == 'theme-settings'
|| path[2] == 'token-settings'
+ || path[2] == 'client-registration'
|| path[2] == 'cache-settings'
|| path[2] == 'client-initial-access'
|| path[2] == 'defense'
@@ -33,8 +35,13 @@
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'clients' || path[1] == 'client' || path[3] == 'clients') && 'active'"><a href="#/realms/{{realm.realm}}/clients"><i class="fa fa-cube"></i> {{:: 'clients' | translate}}</a></li>
<li data-ng-show="access.viewClients" data-ng-class="(path[2] == 'client-templates' || path[1] == 'client-template' || path[3] == 'client-templates') && 'active'"><a href="#/realms/{{realm.realm}}/client-templates"><i class="fa fa-cubes"></i> {{:: 'client-templates' | translate}}</a></li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'roles' || path[2] == 'default-roles' || (path[1] == 'role' && path[3] != 'clients')) && 'active'"><a href="#/realms/{{realm.realm}}/roles"><i class="fa fa-tasks"></i> {{:: 'roles' | translate}}</a></li>
- <li data-ng-show="access.viewIdentityProviders" data-ng-class="(path[2] == 'identity-provider-settings' || path[2] == 'identity-provider-mappers') && 'active'"><a href="#/realms/{{realm.realm}}/identity-provider-settings"><i class="fa fa-exchange"></i> {{:: 'identity-providers' | translate}}</a></li>
- <li data-ng-show="access.viewUsers" data-ng-class="(path[1] == 'user-federation' || path[2] == 'user-federation') && 'active'"><a href="#/realms/{{realm.realm}}/user-federation"><i class="fa fa-database"></i> {{:: 'user-federation' | translate}}</a></li>
+ <li data-ng-show="access.viewIdentityProviders" data-ng-class="(path[2] == 'identity-provider-settings'
+ || path[2] == 'identity-provider-mappers'
+ || path[1] == 'identity-provider-mappers'
+ || path[1] == 'identity-provider') && 'active'"><a href="#/realms/{{realm.realm}}/identity-provider-settings"><i class="fa fa-exchange"></i> {{:: 'identity-providers' | translate}}</a></li>
+ <li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'user-federation'
+ || path[2] == 'user-federation'
+ || path[1] == 'user-federation-mappers') && 'active'"><a href="#/realms/{{realm.realm}}/user-federation"><i class="fa fa-database"></i> {{:: 'user-federation' | translate}}</a></li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[1] == 'authentication' || path[2] == 'authentication') && 'active'"><a href="#/realms/{{realm.realm}}/authentication/flows"><i class="fa fa-lock"></i> {{:: 'authentication' | translate}}</a></li>
</ul>
</div>
@@ -42,10 +49,16 @@
<div class="nav-category" data-ng-show="current.realm">
<h2>{{:: 'manage' | translate}}</h2>
<ul class="nav nav-pills nav-stacked">
- <li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'groups' || path[1] == 'group') && 'active'"><a href="#/realms/{{realm.realm}}/groups"><span class="pficon pficon-users"></span> {{:: 'groups' | translate}}</a></li>
- <li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users' || path[1] == 'user') && 'active'"><a href="#/realms/{{realm.realm}}/users"><span class="pficon pficon-user"></span> {{:: 'users' | translate}}</a></li>
+ <li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'groups'
+ || path[1] == 'group'
+ || path[2] == 'default-groups') && 'active'"><a href="#/realms/{{realm.realm}}/groups"><span class="pficon pficon-users"></span> {{:: 'groups' | translate}}</a></li>
+ <li data-ng-show="access.viewUsers" data-ng-class="(path[2] == 'users'
+ || path[1] == 'user'
+ || path[1] == 'federated-identity') && 'active'"><a href="#/realms/{{realm.realm}}/users"><span class="pficon pficon-user"></span> {{:: 'users' | translate}}</a></li>
<li data-ng-show="access.viewRealm" data-ng-class="(path[2] == 'sessions') && 'active'"><a href="#/realms/{{realm.realm}}/sessions/realm"><i class="fa fa-clock-o"></i> {{:: 'sessions' | translate}}</a></li>
- <li data-ng-show="access.viewEvents" data-ng-class="(path[2] == 'events' || path[2] == 'events-settings') && 'active'"><a href="#/realms/{{realm.realm}}/events"><i class="fa fa-calendar"></i> {{:: 'events' | translate}}</a></li>
+ <li data-ng-show="access.viewEvents" data-ng-class="(path[2] == 'events'
+ || path[2] == 'events-settings'
+ || path[2] == 'admin-events') && 'active'"><a href="#/realms/{{realm.realm}}/events"><i class="fa fa-calendar"></i> {{:: 'events' | translate}}</a></li>
<li data-ng-show="access.manageRealm" ng-class="(path[2] =='partial-import') && 'active'"><a href="#/realms/{{realm.realm}}/partial-import"><span class="pficon pficon-import"></span> {{:: 'import' | translate}}</a></li>
</ul>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-provider-config.html /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-provider-config.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-provider-config.html 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-provider-config.html 2016-11-23 15:37:56.000000000 -0500
@@ -22,7 +22,7 @@
<input class="form-control" type="text" data-ng-model="config[ option.name ]" >
</div>
<div class="col-md-2">
- <button type="submit" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
+ <button type="button" data-ng-click="openRoleSelector(option.name, config)" class="btn btn-default" tooltip-placement="top" tooltip-trigger="mouseover mouseout" tooltip="{{:: 'selectRole.tooltip' | translate}}">{{:: 'selectRole.label' | translate}}</button>
</div>
</div>
</div>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates: kc-tabs-ldap.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/login/login-config-totp.ftl /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login-config-totp.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/base/login/login-config-totp.ftl 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login-config-totp.ftl 2016-11-23 15:37:56.000000000 -0500
@@ -5,41 +5,28 @@
<#elseif section = "header">
${msg("loginTotpTitle")}
<#elseif section = "form">
- <form action="${url.loginAction}" class="${properties.kcFormClass!}" id="kc-totp-settings-form" method="post">
- <div class="${properties.kcFormGroupClass!}">
- <div class="${properties.kcLabelWrapperClass!}">
- <label for="otp" class="${properties.kcLabelClass!}">${msg("loginTotpOneTime")}</label>
- </div>
- <div class="${properties.kcInputWrapperClass!}">
- <input type="text" id="totp" name="totp" autocomplete="off" class="${properties.kcInputClass!}" />
- </div>
- <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}" />
+<ol id="kc-totp-settings">
+ <li>
+ <p>${msg("loginTotpStep1")}</p>
+ </li>
+ <li>
+ <p>${msg("loginTotpStep2")}</p>
+ <img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"><br/>
+ <span class="code">${totp.totpSecretEncoded}</span>
+ </li>
+ <li>
+ <p>${msg("loginTotpStep3")}</p>
+ </li>
+ </ol>
+ <form action="${url.loginAction}" class="${properties.kcFormClass!}" id="kc-totp-settings-form" method="post">
+ <div class="${properties.kcFormGroupClass!}">
+ <div class="${properties.kcInputWrapperClass!}">
+ <input type="text" id="totp" name="totp" autocomplete="off" class="${properties.kcInputClass!}" />
</div>
+ <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}" />
+ </div>
- <div class="${properties.kcFormGroupClass!}">
- <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
- <div class="${properties.kcFormOptionsWrapperClass!}">
- </div>
- </div>
-
- <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
- <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}"/>
- </div>
- </div>
- </form>
- <#elseif section = "info" >
- <ol id="kc-totp-settings">
- <li>
- <p>${msg("loginTotpStep1")}</p>
- </li>
- <li>
- <p>${msg("loginTotpStep2")}</p>
- <img src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"><br/>
- <span class="code">${totp.totpSecretEncoded}</span>
- </li>
- <li>
- <p>${msg("loginTotpStep3")}</p>
- </li>
- </ol>
+ <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}"/>
+ </form>
</#if>
</@layout.registrationLayout>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/account/resources/css/account.css /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/account/resources/css/account.css
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/account/resources/css/account.css 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/account/resources/css/account.css 2016-11-23 15:37:56.000000000 -0500
@@ -208,18 +208,6 @@
border: 1px solid #eee;
}
-ol li span {
- padding: 15px;
- background-color: #f5f5f5;
- border: 1px solid #eee;
- top: 46px;
- left: 270px;
- right: 50px;
- position: absolute;
- font-family: courier, ​monospace;
- font-size: 25px;
-}
-
hr + .form-horizontal {
border: none;
padding-top: 0;
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/filesaver/FileSaver.js /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/filesaver/FileSaver.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/filesaver/FileSaver.js 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/filesaver/FileSaver.js 2016-11-23 15:37:56.000000000 -0500
@@ -1,10 +1,11 @@
/* FileSaver.js
- * A saveAs() FileSaver implementation.
- * 2014-05-27
+ * A saveAs() FileSaver implementation.
+ * 1.3.2
+ * 2016-06-16 18:25:19
*
- * By Eli Grey, http://eligrey.com
- * License: X11/MIT
- * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
+ * By Eli Grey, http://eligrey.com
+ * License: MIT
+ * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
*/
/*global self */
@@ -12,16 +13,10 @@
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
-var saveAs = saveAs
- // IE 10+ (native saveAs)
- || (typeof navigator !== "undefined" &&
- navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
- // Everyone else
- || (function(view) {
+var saveAs = saveAs || (function(view) {
"use strict";
// IE <10 is explicitly unsupported
- if (typeof navigator !== "undefined" &&
- /MSIE [1-9]\./.test(navigator.userAgent)) {
+ if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
return;
}
var
@@ -31,36 +26,30 @@
return view.URL || view.webkitURL || view;
}
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
- , can_use_save_link = !view.externalHost && "download" in save_link
+ , can_use_save_link = "download" in save_link
, click = function(node) {
- var event = doc.createEvent("MouseEvents");
- event.initMouseEvent(
- "click", true, false, view, 0, 0, 0, 0, 0
- , false, false, false, false, 0, null
- );
+ var event = new MouseEvent("click");
node.dispatchEvent(event);
}
- , webkit_req_fs = view.webkitRequestFileSystem
- , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
+ , is_safari = /constructor/i.test(view.HTMLElement) || view.safari
+ , is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
, throw_outside = function(ex) {
(view.setImmediate || view.setTimeout)(function() {
throw ex;
}, 0);
}
, force_saveable_type = "application/octet-stream"
- , fs_min_size = 0
- , deletion_queue = []
- , process_deletion_queue = function() {
- var i = deletion_queue.length;
- while (i--) {
- var file = deletion_queue[i];
+ // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
+ , arbitrary_revoke_timeout = 1000 * 40 // in ms
+ , revoke = function(file) {
+ var revoker = function() {
if (typeof file === "string") { // file is an object URL
get_URL().revokeObjectURL(file);
} else { // file is a File
file.remove();
}
- }
- deletion_queue.length = 0; // clear queue
+ };
+ setTimeout(revoker, arbitrary_revoke_timeout);
}
, dispatch = function(filesaver, event_types, event) {
event_types = [].concat(event_types);
@@ -76,134 +65,97 @@
}
}
}
- , FileSaver = function(blob, name) {
+ , auto_bom = function(blob) {
+ // prepend BOM for UTF-8 XML and text/* types (including HTML)
+ // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+ if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+ return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
+ }
+ return blob;
+ }
+ , FileSaver = function(blob, name, no_auto_bom) {
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
// First try a.download, then web filesystem, then object URLs
var
filesaver = this
, type = blob.type
- , blob_changed = false
+ , force = type === force_saveable_type
, object_url
- , target_view
- , get_object_url = function() {
- var object_url = get_URL().createObjectURL(blob);
- deletion_queue.push(object_url);
- return object_url;
- }
, dispatch_all = function() {
dispatch(filesaver, "writestart progress write writeend".split(" "));
}
// on any filesys errors revert to saving with object URLs
, fs_error = function() {
+ if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
+ // Safari doesn't allow downloading of blob urls
+ var reader = new FileReader();
+ reader.onloadend = function() {
+ var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
+ var popup = view.open(url, '_blank');
+ if(!popup) view.location.href = url;
+ url=undefined; // release reference before dispatching
+ filesaver.readyState = filesaver.DONE;
+ dispatch_all();
+ };
+ reader.readAsDataURL(blob);
+ filesaver.readyState = filesaver.INIT;
+ return;
+ }
// don't create more object URLs than needed
- if (blob_changed || !object_url) {
- object_url = get_object_url(blob);
+ if (!object_url) {
+ object_url = get_URL().createObjectURL(blob);
}
- if (target_view) {
- target_view.location.href = object_url;
+ if (force) {
+ view.location.href = object_url;
} else {
- window.open(object_url, "_blank");
+ var opened = view.open(object_url, "_blank");
+ if (!opened) {
+ // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
+ view.location.href = object_url;
+ }
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
+ revoke(object_url);
}
- , abortable = function(func) {
- return function() {
- if (filesaver.readyState !== filesaver.DONE) {
- return func.apply(this, arguments);
- }
- };
- }
- , create_if_not_found = {create: true, exclusive: false}
- , slice
;
filesaver.readyState = filesaver.INIT;
- if (!name) {
- name = "download";
- }
+
if (can_use_save_link) {
- object_url = get_object_url(blob);
- save_link.href = object_url;
- save_link.download = name;
- click(save_link);
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- return;
- }
- // Object and web filesystem URLs have a problem saving in Google Chrome when
- // viewed in a tab, so I force save with application/octet-stream
- // http://code.google.com/p/chromium/issues/detail?id=91158
- if (view.chrome && type && type !== force_saveable_type) {
- slice = blob.slice || blob.webkitSlice;
- blob = slice.call(blob, 0, blob.size, force_saveable_type);
- blob_changed = true;
- }
- // Since I can't be sure that the guessed media type will trigger a download
- // in WebKit, I append .download to the filename.
- // https://bugs.webkit.org/show_bug.cgi?id=65440
- if (webkit_req_fs && name !== "download") {
- name += ".download";
- }
- if (type === force_saveable_type || webkit_req_fs) {
- target_view = view;
- }
- if (!req_fs) {
- fs_error();
+ object_url = get_URL().createObjectURL(blob);
+ setTimeout(function() {
+ save_link.href = object_url;
+ save_link.download = name;
+ click(save_link);
+ dispatch_all();
+ revoke(object_url);
+ filesaver.readyState = filesaver.DONE;
+ });
return;
}
- fs_min_size += blob.size;
- req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
- fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
- var save = function() {
- dir.getFile(name, create_if_not_found, abortable(function(file) {
- file.createWriter(abortable(function(writer) {
- writer.onwriteend = function(event) {
- target_view.location.href = file.toURL();
- deletion_queue.push(file);
- filesaver.readyState = filesaver.DONE;
- dispatch(filesaver, "writeend", event);
- };
- writer.onerror = function() {
- var error = writer.error;
- if (error.code !== error.ABORT_ERR) {
- fs_error();
- }
- };
- "writestart progress write abort".split(" ").forEach(function(event) {
- writer["on" + event] = filesaver["on" + event];
- });
- writer.write(blob);
- filesaver.abort = function() {
- writer.abort();
- filesaver.readyState = filesaver.DONE;
- };
- filesaver.readyState = filesaver.WRITING;
- }), fs_error);
- }), fs_error);
- };
- dir.getFile(name, {create: false}, abortable(function(file) {
- // delete file if it already exists
- file.remove();
- save();
- }), abortable(function(ex) {
- if (ex.code === ex.NOT_FOUND_ERR) {
- save();
- } else {
- fs_error();
- }
- }));
- }), fs_error);
- }), fs_error);
+
+ fs_error();
}
, FS_proto = FileSaver.prototype
- , saveAs = function(blob, name) {
- return new FileSaver(blob, name);
+ , saveAs = function(blob, name, no_auto_bom) {
+ return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
}
;
- FS_proto.abort = function() {
- var filesaver = this;
- filesaver.readyState = filesaver.DONE;
- dispatch(filesaver, "abort");
- };
+ // IE 10+ (native saveAs)
+ if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
+ return function(blob, name, no_auto_bom) {
+ name = name || blob.name || "download";
+
+ if (!no_auto_bom) {
+ blob = auto_bom(blob);
+ }
+ return navigator.msSaveOrOpenBlob(blob, name);
+ };
+ }
+
+ FS_proto.abort = function(){};
FS_proto.readyState = FS_proto.INIT = 0;
FS_proto.WRITING = 1;
FS_proto.DONE = 2;
@@ -217,11 +169,6 @@
FS_proto.onwriteend =
null;
- view.addEventListener("unload", process_deletion_queue, false);
- saveAs.unload = function() {
- process_deletion_queue();
- view.removeEventListener("unload", process_deletion_queue, false);
- };
return saveAs;
}(
typeof self !== "undefined" && self
@@ -232,10 +179,10 @@
// while `this` is nsIContentFrameMessageManager
// with an attribute `content` that corresponds to the window
-if (typeof module !== "undefined" && module !== null) {
- module.exports = saveAs;
-} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
- define([], function() {
+if (typeof module !== "undefined" && module.exports) {
+ module.exports.saveAs = saveAs;
+} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {
+ define("FileSaver.js", function() {
return saveAs;
});
}
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/login/resources/css/login.css /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/login/resources/css/login.css
--- /tmp/keycloak/jboss_keycloak-postgres-2.3.0.Final/jboss/keycloak/themes/keycloak/login/resources/css/login.css 2016-10-26 04:17:48.000000000 -0400
+++ /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/login/resources/css/login.css 2016-11-23 15:37:56.000000000 -0500
@@ -244,18 +244,26 @@
.zocial.microsoft {background-color: #0052a4; color: #fff;}
.zocial.microsoft:before { content: "\f15d"; }
+@media (min-width: 1281px) {
+ #kc-container-wrapper {
+ bottom: 13%;
+ }
+
+ #kc-logo-wrapper {
+ position: absolute;
+ top: 50px;
+ right: 50px;
+ }
+}
@media (min-width: 768px) {
#kc-container-wrapper {
- bottom: 13%;
position: absolute;
width: 100%;
}
#kc-logo-wrapper {
- position: absolute;
- top: 50px;
- right: 50px;
+ margin-left: auto;
}
.login-pf .container {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment