Skip to content

Instantly share code, notes, and snippets.

@hkeeler
Created January 3, 2017 17:15
Show Gist options
  • Save hkeeler/e2f23f2de1cd62fb49c4ee684ad7a03c to your computer and use it in GitHub Desktop.
Save hkeeler/e2f23f2de1cd62fb49c4ee684ad7a03c to your computer and use it in GitHub Desktop.
Diff of /opt/jboss directory from v2.4.0 to v2.5.0 of jboss/keycloak-postgres Docker images
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/client: keycloak-admin-cli-2.5.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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/client: keycloak-client-registration-cli-2.5.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin: kcadm.bat
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin: kcadm.sh
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.bat /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/kcreg.bat
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.bat 2016-11-23 14:27:40.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/kcreg.bat 2017-01-03 08:18:02.000000000 -0500
@@ -5,4 +5,4 @@
) else (
set DIRNAME=.\
)
-java %KC_OPTS% -cp %DIRNAME%\client\keycloak-client-registration-cli-2.4.0.Final.jar org.keycloak.client.registration.cli.KcRegMain %*
+java %KC_OPTS% -cp %DIRNAME%\client\keycloak-client-registration-cli-2.5.0.Final.jar org.keycloak.client.registration.cli.KcRegMain %*
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.sh /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/kcreg.sh
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/bin/kcreg.sh 2016-11-23 14:27:40.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/bin/kcreg.sh 2017-01-03 08:18:02.000000000 -0500
@@ -20,4 +20,4 @@
fi
DIRNAME=`dirname "$RESOLVED_NAME"`
-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
+java $KC_OPTS -cp $DIRNAME/client/keycloak-client-registration-cli-2.5.0.Final.jar org.keycloak.client.registration.cli.KcRegMain "$@"
\ No newline at end of file
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/domain/configuration/domain.xml /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/domain/configuration/domain.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/domain/configuration/domain.xml 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/domain/configuration/domain.xml 2017-01-03 09:29:30.000000000 -0500
@@ -171,7 +171,9 @@
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
- <local-cache name="realms"/>
+ <local-cache name="realms">
+ <eviction max-entries="10000" strategy="LRU"/>
+ </local-cache>
<local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
</local-cache>
@@ -561,7 +563,9 @@
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
<transport lock-timeout="60000"/>
- <local-cache name="realms"/>
+ <local-cache name="realms">
+ <eviction max-entries="10000" strategy="LRU"/>
+ </local-cache>
<local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
</local-cache>
Binary files /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 and /tmp/keycloak/jboss_keycloak-postgres-2.5.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.4.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.5.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.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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/jboss/as/product/keycloak/dir/META-INF/MANIFEST.MF 2017-01-03 09:29:29.000000000 -0500
@@ -1,3 +1,3 @@
JBoss-Product-Release-Name: Keycloak
-JBoss-Product-Release-Version: 2.4.0.Final
+JBoss-Product-Release-Version: 2.5.0.Final
JBoss-Product-Console-Slot: main
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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main: keycloak-authz-policy-common-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-common/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
<property name="jboss.api" value="private"/>
</properties>
<resources>
- <resource-root path="keycloak-authz-policy-common-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-authz-policy-common-2.5.0.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main: keycloak-authz-policy-drools-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-authz-policy-drools/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -20,7 +20,7 @@
<property name="jboss.api" value="private"/>
</properties>
<resources>
- <resource-root path="keycloak-authz-policy-drools-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-authz-policy-drools-2.5.0.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main: keycloak-common-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-common/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -17,7 +17,7 @@
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-common">
<resources>
- <resource-root path="keycloak-common-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-common-2.5.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-core/main: keycloak-core-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main: keycloak-core-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-core/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -17,7 +17,7 @@
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-core">
<resources>
- <resource-root path="keycloak-core-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-core-2.5.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-js-adapter/main: keycloak-js-adapter-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main: keycloak-js-adapter-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-js-adapter/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,6 +21,6 @@
</properties>
<resources>
- <resource-root path="keycloak-js-adapter-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-js-adapter-2.5.0.Final.jar"/>
</resources>
</module>
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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main: keycloak-kerberos-federation-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-kerberos-federation/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-kerberos-federation-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-kerberos-federation-2.5.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-ldap-federation/main: keycloak-ldap-federation-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main: keycloak-ldap-federation-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-ldap-federation/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-ldap-federation-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-ldap-federation-2.5.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-model-infinispan/main: keycloak-model-infinispan-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main: keycloak-model-infinispan-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-infinispan/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-model-infinispan-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-model-infinispan-2.5.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-model-jpa/main: keycloak-model-jpa-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main: keycloak-model-jpa-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-jpa/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-model-jpa-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-model-jpa-2.5.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-model-mongo/main: keycloak-model-mongo-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main: keycloak-model-mongo-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-model-mongo/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-model-mongo-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-model-mongo-2.5.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-saml-core/main: keycloak-saml-core-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main: keycloak-saml-core-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-saml-core-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-saml-core-2.5.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-saml-core-public/main: keycloak-saml-core-public-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main: keycloak-saml-core-public-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-saml-core-public/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-saml-core-public-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-saml-core-public-2.5.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/main: keycloak-server-spi-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main: keycloak-server-spi-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -17,7 +17,7 @@
-->
<module xmlns="urn:jboss:module:1.3" name="org.keycloak.keycloak-server-spi">
<resources>
- <resource-root path="keycloak-server-spi-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-server-spi-2.5.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/main: keycloak-server-spi-private-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi-private/main: keycloak-server-spi-private-2.5.0.Final.jar
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi-private/main/module.xml /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi-private/main/module.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi-private/main/module.xml 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-server-spi-private/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -22,7 +22,7 @@
</properties>
<resources>
- <resource-root path="keycloak-server-spi-private-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-server-spi-private-2.5.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-services/main: keycloak-services-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main: keycloak-services-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-services/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-services-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-services-2.5.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-sssd-federation/main: keycloak-sssd-federation-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main: keycloak-sssd-federation-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-sssd-federation/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-sssd-federation-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-sssd-federation-2.5.0.Final.jar"/>
<resource-root path="/usr/share/java/jna.jar"/>
</resources>
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
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main: keycloak-wildfly-adduser-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-adduser/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -23,7 +23,7 @@
</properties>
<resources>
- <resource-root path="keycloak-wildfly-adduser-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-adduser-2.5.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-wildfly-extensions/main: keycloak-wildfly-extensions-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main: keycloak-wildfly-extensions-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-extensions/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -21,7 +21,7 @@
</properties>
<resources>
- <resource-root path="keycloak-wildfly-extensions-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-extensions-2.5.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-wildfly-server-subsystem/main: keycloak-wildfly-server-subsystem-2.4.0.Final.jar
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main: keycloak-wildfly-server-subsystem-2.5.0.Final.jar
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/modules/system/layers/keycloak/org/keycloak/keycloak-wildfly-server-subsystem/main/module.xml 2017-01-03 09:29:29.000000000 -0500
@@ -24,7 +24,7 @@
<resources>
<resource-root path="."/>
- <resource-root path="keycloak-wildfly-server-subsystem-2.4.0.Final.jar"/>
+ <resource-root path="keycloak-wildfly-server-subsystem-2.5.0.Final.jar"/>
</resources>
<dependencies>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml /tmp/keycloak/jboss_keycloak-postgres-2.5.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 2016-11-23 17:31:42.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/configuration/standalone-ha.xml 2017-01-03 10:54:40.000000000 -0500
@@ -247,7 +247,9 @@
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
<transport lock-timeout="60000"/>
- <local-cache name="realms"/>
+ <local-cache name="realms">
+ <eviction max-entries="10000" strategy="LRU"/>
+ </local-cache>
<local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
</local-cache>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/configuration/standalone.xml /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/configuration/standalone.xml
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/configuration/standalone.xml 2016-11-23 17:31:40.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/configuration/standalone.xml 2017-01-03 10:54:39.000000000 -0500
@@ -247,7 +247,9 @@
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:4.0">
<cache-container name="keycloak" jndi-name="infinispan/Keycloak">
- <local-cache name="realms"/>
+ <local-cache name="realms">
+ <eviction max-entries="10000" strategy="LRU"/>
+ </local-cache>
<local-cache name="users">
<eviction max-entries="10000" strategy="LRU"/>
</local-cache>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid /tmp/keycloak/jboss_keycloak-postgres-2.5.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 2017-01-03 12:00:44.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/data/kernel/process-uuid 2017-01-03 12:01:27.000000000 -0500
@@ -1 +1 @@
-95559586-f90d-4b3f-a49f-2a04748ece9b
+68609290-f500-4e6c-b846-4f25f9524ff8
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/log/server.log /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/log/server.log
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/standalone/log/server.log 2017-01-03 12:00:50.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/standalone/log/server.log 2017-01-03 12:01:33.000000000 -0500
@@ -1,7 +1,7 @@
-2017-01-03 17:00:43,271 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
-2017-01-03 17:00:44,223 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
-2017-01-03 17:00:44,327 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: Keycloak 2.4.0.Final (WildFly Core 2.0.10.Final) starting
-2017-01-03 17:00:44,330 DEBUG [org.jboss.as.config] (MSC service thread 1-2) Configured system properties:
+2017-01-03 17:01:27,302 INFO [org.jboss.modules] (main) JBoss Modules version 1.5.1.Final
+2017-01-03 17:01:27,619 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final
+2017-01-03 17:01:27,690 INFO [org.jboss.as] (MSC service thread 1-2) WFLYSRV0049: Keycloak 2.5.0.Final (WildFly Core 2.0.10.Final) starting
+2017-01-03 17:01:27,692 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,9 +12,9 @@
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.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.endorsed.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/endorsed
+ java.ext.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
+ java.home = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.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
@@ -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 = bc19243032e3
+ jboss.host.name = ef80cb4f32ce
jboss.modules.dir = /opt/jboss/keycloak/modules
jboss.modules.system.pkgs = org.jboss.byteman
- jboss.node.name = bc19243032e3
- jboss.qualified.host.name = bc19243032e3
+ jboss.node.name = ef80cb4f32ce
+ jboss.qualified.host.name = ef80cb4f32ce
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 = bc19243032e3
+ jboss.server.name = ef80cb4f32ce
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.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.boot.class.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/classes
+ sun.boot.library.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/amd64
sun.cpu.endian = little
sun.cpu.isalist =
sun.io.unicode.encoding = UnicodeLittle
@@ -88,43 +88,43 @@
user.language = en
user.name = jboss
user.timezone = UTC
-2017-01-03 17:00:44,330 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
-2017-01-03 17:00:46,691 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
-2017-01-03 17:00:46,740 INFO [org.xnio] (MSC service thread 1-2) XNIO version 3.3.4.Final
-2017-01-03 17:00:46,763 INFO [org.xnio.nio] (MSC service thread 1-2) XNIO NIO Implementation Version 3.3.4.Final
-2017-01-03 17:00:46,846 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) WFLYCLINF0001: Activating Infinispan subsystem.
-2017-01-03 17:00:46,886 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 40) WFLYNAM0001: Activating Naming Subsystem
-2017-01-03 17:00:46,903 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) WFLYSEC0002: Activating Security Subsystem
-2017-01-03 17:00:46,902 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.
-2017-01-03 17:00:46,891 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 38) WFLYJSF0007: Activated the following JSF Implementations: [main]
-2017-01-03 17:00:46,944 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
-2017-01-03 17:00:46,980 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
-2017-01-03 17:00:47,010 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
-2017-01-03 17:00:47,141 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0003: Undertow 1.3.15.Final starting
-2017-01-03 17:00:47,149 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0003: Undertow 1.3.15.Final starting
-2017-01-03 17:00:47,157 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
-2017-01-03 17:00:47,187 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.18.Final
-2017-01-03 17:00:47,323 INFO [org.jboss.as.connector] (MSC service thread 1-2) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
-2017-01-03 17:00:47,314 INFO [org.jboss.as.naming] (MSC service thread 1-1) WFLYNAM0003: Starting Naming Service
-2017-01-03 17:00:47,380 INFO [org.jboss.as.mail.extension] (MSC service thread 1-2) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
-2017-01-03 17:00:47,404 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = postgresql
-2017-01-03 17:00:47,405 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) WFLYJCA0018: Started Driver service with driver-name = h2
-2017-01-03 17:00:47,484 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: '[]']
-2017-01-03 17:00:47,831 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.
-2017-01-03 17:00:47,840 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) 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.
-2017-01-03 17:00:47,855 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
-2017-01-03 17:00:48,001 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
-2017-01-03 17:00:48,093 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
-2017-01-03 17:00:48,338 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/KeycloakDS]
-2017-01-03 17:00:48,357 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
-2017-01-03 17:00:48,740 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-2) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
-2017-01-03 17:00:48,823 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
-2017-01-03 17:00:48,842 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
-2017-01-03 17:00:50,764 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 55) WFLYCLINF0002: Started work cache from keycloak container
-2017-01-03 17:00:50,770 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 52) WFLYCLINF0002: Started sessions cache from keycloak container
-2017-01-03 17:00:50,775 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 48) WFLYCLINF0002: Started offlineSessions cache from keycloak container
-2017-01-03 17:00:50,776 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 51) WFLYCLINF0002: Started users cache from keycloak container
-2017-01-03 17:00:50,781 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 49) WFLYCLINF0002: Started realms cache from keycloak container
-2017-01-03 17:00:50,782 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 54) WFLYCLINF0002: Started loginFailures cache from keycloak container
-2017-01-03 17:00:50,782 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 50) WFLYCLINF0002: Started authorization cache from keycloak container
-2017-01-03 17:00:50,783 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 53) WFLYCLINF0002: Started keys cache from keycloak container
+2017-01-03 17:01:27,692 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
+2017-01-03 17:01:29,393 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0039: Creating http management service using socket-binding (management-http)
+2017-01-03 17:01:29,423 INFO [org.xnio] (MSC service thread 1-1) XNIO version 3.3.4.Final
+2017-01-03 17:01:29,442 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.3.4.Final
+2017-01-03 17:01:29,515 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.18.Final
+2017-01-03 17:01:29,538 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
+2017-01-03 17:01:29,546 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 32) WFLYCLINF0001: Activating Infinispan subsystem.
+2017-01-03 17:01:29,704 INFO [org.jboss.as.naming] (ServerService Thread Pool -- 40) WFLYNAM0001: Activating Naming Subsystem
+2017-01-03 17:01:29,711 INFO [org.jboss.as.jsf] (ServerService Thread Pool -- 38) WFLYJSF0007: Activated the following JSF Implementations: [main]
+2017-01-03 17:01:29,716 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.
+2017-01-03 17:01:29,724 INFO [org.jboss.as.security] (ServerService Thread Pool -- 44) WFLYSEC0002: Activating Security Subsystem
+2017-01-03 17:01:29,737 INFO [org.jboss.as.connector] (MSC service thread 1-1) WFLYJCA0009: Starting JCA Subsystem (WildFly/IronJacamar 1.3.2.Final)
+2017-01-03 17:01:29,826 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
+2017-01-03 17:01:29,869 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 46) WFLYUT0003: Undertow 1.3.15.Final starting
+2017-01-03 17:01:29,876 INFO [org.jboss.as.security] (MSC service thread 1-2) WFLYSEC0001: Current PicketBox version=4.9.4.Final
+2017-01-03 17:01:29,901 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) WFLYJCA0005: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
+2017-01-03 17:01:29,906 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.3.15.Final starting
+2017-01-03 17:01:29,943 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0018: Started Driver service with driver-name = h2
+2017-01-03 17:01:29,944 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0018: Started Driver service with driver-name = postgresql
+2017-01-03 17:01:30,010 INFO [org.jboss.as.naming] (MSC service thread 1-2) WFLYNAM0003: Starting Naming Service
+2017-01-03 17:01:30,018 INFO [org.jboss.as.mail.extension] (MSC service thread 1-1) WFLYMAIL0001: Bound mail session [java:jboss/mail/Default]
+2017-01-03 17:01:30,194 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: '[]']
+2017-01-03 17:01:30,252 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0012: Started server default-server.
+2017-01-03 17:01:30,325 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.
+2017-01-03 17:01:30,355 INFO [org.jboss.as.ejb3] (MSC service thread 1-2) 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.
+2017-01-03 17:01:30,483 INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0018: Host default-host starting
+2017-01-03 17:01:30,531 INFO [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0006: Undertow HTTP listener default listening on 0.0.0.0:8080
+2017-01-03 17:01:30,773 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/KeycloakDS]
+2017-01-03 17:01:30,776 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
+2017-01-03 17:01:31,588 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-2) ISPN000128: Infinispan version: Infinispan 'Mahou' 8.1.0.Final
+2017-01-03 17:01:31,757 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
+2017-01-03 17:01:31,775 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
+2017-01-03 17:01:33,473 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 52) WFLYCLINF0002: Started sessions cache from keycloak container
+2017-01-03 17:01:33,483 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 53) WFLYCLINF0002: Started keys cache from keycloak container
+2017-01-03 17:01:33,484 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 48) WFLYCLINF0002: Started offlineSessions cache from keycloak container
+2017-01-03 17:01:33,484 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 54) WFLYCLINF0002: Started loginFailures cache from keycloak container
+2017-01-03 17:01:33,491 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 49) WFLYCLINF0002: Started realms cache from keycloak container
+2017-01-03 17:01:33,491 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 55) WFLYCLINF0002: Started work cache from keycloak container
+2017-01-03 17:01:33,491 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 51) WFLYCLINF0002: Started users cache from keycloak container
+2017-01-03 17:01:33,495 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 50) WFLYCLINF0002: Started authorization cache from keycloak container
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/account/account.ftl /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/account/account.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/account/account.ftl 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/account/account.ftl 2017-01-03 09:29:30.000000000 -0500
@@ -14,15 +14,17 @@
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker?html}">
- <div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
- <div class="col-sm-2 col-md-2">
- <label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
- </div>
+ <#if !realm.registrationEmailAsUsername>
+ <div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
+ <div class="col-sm-2 col-md-2">
+ <label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
+ </div>
- <div class="col-sm-10 col-md-10">
- <input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')?html}"/>
+ <div class="col-sm-10 col-md-10">
+ <input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')?html}"/>
+ </div>
</div>
- </div>
+ </#if>
<div class="form-group ${messagesPerField.printIfExists('email','has-error')}">
<div class="col-sm-2 col-md-2">
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_en.properties 2017-01-03 09:29:30.000000000 -0500
@@ -32,6 +32,10 @@
resetPasswordAllowed.tooltip=Show a link on login page for user to click on when they have forgotten their credentials.
rememberMe=Remember Me
rememberMe.tooltip=Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.
+loginWithEmailAllowed=Login with email
+loginWithEmailAllowed.tooltip=Allow users to log in with their email address.
+duplicateEmailsAllowed=Duplicate emails
+duplicateEmailsAllowed.tooltip=Allow multiple users to have the same email address. Changing this setting will also clear the users cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.
verifyEmail=Verify email
verifyEmail.tooltip=Require the user to verify their email address the first time they login.
sslRequired=Require SSL
@@ -39,6 +43,7 @@
sslRequired.option.external=external requests
sslRequired.option.none=none
sslRequired.tooltip=Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.
+publicKeys=Public keys
publicKey=Public key
privateKey=Private key
gen-new-keys=Generate new keys
@@ -72,6 +77,8 @@
realm-cache-clear.tooltip=Clears all entries from the realm cache (this will clear entries for all realms)
user-cache-clear=User Cache
user-cache-clear.tooltip=Clears all entries from the user cache (this will clear entries for all realms)
+keys-cache-clear=Keys Cache
+keys-cache-clear.tooltip=Clears all entries from the cache of external public keys. These are keys of external clients or identity providers. (this wil clear entries for all realms)
revoke-refresh-token=Revoke Refresh Token
revoke-refresh-token.tooltip=If enabled refresh tokens can only be used once. Otherwise refresh tokens are not revoked when used and can be used multiple times.
sso-session-idle=SSO Session Idle
@@ -168,8 +175,18 @@
sectorIdentifierUri.tooltip=Providers that use pairwise sub values and support Dynamic Client Registration SHOULD use the sector_identifier_uri parameter. It provides a way for a group of websites under common administrative control to have consistent pairwise sub values independent of the individual domain names. It also provides a way for Clients to change redirect_uri domains without having to reregister all of their users.
pairwiseSubAlgorithmSalt.label=Salt
pairwiseSubAlgorithmSalt.tooltip=Salt used when calculating the pairwise subject identifier. If left blank, a salt will be generated.
-
-
+addressClaim.street.label=User Attribute Name for Street
+addressClaim.street.tooltip=Name of User Attribute, which will be used to map to 'street_address' subclaim inside 'address' token claim. Defaults to 'street' .
+addressClaim.locality.label=User Attribute Name for Locality
+addressClaim.locality.tooltip=Name of User Attribute, which will be used to map to 'locality' subclaim inside 'address' token claim. Defaults to 'locality' .
+addressClaim.region.label=User Attribute Name for Region
+addressClaim.region.tooltip=Name of User Attribute, which will be used to map to 'region' subclaim inside 'address' token claim. Defaults to 'region' .
+addressClaim.postal_code.label=User Attribute Name for Postal Code
+addressClaim.postal_code.tooltip=Name of User Attribute, which will be used to map to 'postal_code' subclaim inside 'address' token claim. Defaults to 'postal_code' .
+addressClaim.country.label=User Attribute Name for Country
+addressClaim.country.tooltip=Name of User Attribute, which will be used to map to 'country' subclaim inside 'address' token claim. Defaults to 'country' .
+addressClaim.formatted.label=User Attribute Name for Formatted Address
+addressClaim.formatted.tooltip=Name of User Attribute, which will be used to map to 'formatted' subclaim inside 'address' token claim. Defaults to 'formatted' .
# client details
clients.tooltip=Clients are trusted browser apps and web services in a realm. These clients can request a login. You can also define client specific roles.
@@ -260,6 +277,8 @@
logout-service-post-binding-url.tooltip=SAML POST Binding URL for the client's single logout service. You can leave this blank if you are using a different binding
logout-service-redir-binding-url=Logout Service Redirect Binding URL
logout-service-redir-binding-url.tooltip=SAML Redirect Binding URL for the client's single logout service. You can leave this blank if you are using a different binding.
+saml-signature-keyName-transformer=SAML Signature Key Name
+saml-signature-keyName-transformer.tooltip=Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counterparty, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.
# client import
import-client=Import Client
@@ -879,6 +898,7 @@
clear-admin-events.tooltip=Deletes all admin events in the database.
server-version=Server Version
server-profile=Server Profile
+server-disabled=Server Disabled Features
info=Info
providers=Providers
server-time=Server Time
@@ -1017,6 +1037,10 @@
authz-authorization-services-enabled=Authorization Enabled
authz-authorization-services-enabled.tooltip=Enable/Disable fine-grained authorization support for a client
authz-required=Required
+authz-show-details=Show Details
+authz-hide-details=Hide Details
+authz-associated-permissions=Associated Permissions
+authz-no-permission-associated=No permissions associated
# Authz Settings
authz-import-config.tooltip=Import a JSON file containing authorization settings for this resource server.
@@ -1037,6 +1061,7 @@
authz-no-resources-available=No resources available.
authz-no-scopes-assigned=No scopes assigned.
authz-no-type-defined=No type defined.
+authz-no-uri-defined=No URI defined.
authz-no-permission-assigned=No permission assigned.
authz-no-policy-assigned=No policy assigned.
authz-create-permission=Create permission
@@ -1089,6 +1114,11 @@
authz-no-users-assigned=No users assigned.
authz-policy-user-users.tooltip=Specifies which user(s) are allowed by this policy.
+# Authz Client Policy Detail
+authz-add-client-policy=Add Client Policy
+authz-no-clients-assigned=No clients assigned.
+authz-policy-client-clients.tooltip=Specifies which client(s) are allowed by this policy.
+
# Authz Time Policy Detail
authz-add-time-policy=Add Time Policy
authz-policy-time-not-before.tooltip=Defines the time before which the policy MUST NOT be granted. Only granted if current date/time is after or equal to this value.
@@ -1207,6 +1237,8 @@
userStorage.cachePolicy.maxLifespan=Max Lifespan
userStorage.cachePolicy.maxLifespan.tooltip=Max lifespan of a user cache entry in milliseconds.
user-origin-link=Storage Origin
+user-origin.tooltip=UserStorageProvider the user was loaded from
+user-link.tooltip=UserStorageProvider this locally stored user was imported from.
disable=Disable
disableable-credential-types=Disableable Types
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_ja.properties /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_ja.properties
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_ja.properties 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_ja.properties 2017-01-03 09:29:30.000000000 -0500
@@ -121,7 +121,7 @@
realm-tab-themes=テーマ
realm-tab-cache=キャッシュ
realm-tab-tokens=トークン
-realm-tab-client-initial-access=初期アクセストークン
+realm-tab-client-registration=クライアント登録
realm-tab-security-defenses=セキュリティ防御
realm-tab-general=一般
add-realm=レルムの追加
@@ -165,6 +165,12 @@
usermodel.clientRoleMapping.rolePrefix.tooltip=各クライアントロールのプレフィックスを設定します (オプション)。
usermodel.realmRoleMapping.rolePrefix.label=レルムロールのプレフィックス
usermodel.realmRoleMapping.rolePrefix.tooltip=各レルムロールのプレフィックスを設定します (オプション)。
+sectorIdentifierUri.label=Sector Identifier URI
+sectorIdentifierUri.tooltip=pairwise sub 値を使用し、かつ Dynamic Client Registration をサポートするプロバイダーは、sector_identifier_uri パラメータを使用すべきです (SHOULD)。これは、共通の管理下にある Web サイト群に対し、個々のドメイン名とは独立して parwise sub 値の一貫性を保持する方法を提供します。また、クライアントに対し、すべてのユーザーを再登録させることなしに redirect_uri を変更する方法も提供します。
+pairwiseSubAlgorithmSalt.label=ソルト
+pairwiseSubAlgorithmSalt.tooltip=pairwise subject identifier を計算する際に使用するソルトを設定します。空白のままにするとソルトは生成されます。
+
+
# client details
clients.tooltip=クライアントとはレルム内の信頼されたブラウザーアプリケーションや Web サービスです。これらのクライアントはログインを要求することができます。また、クライアント固有のロールを定義することができます。
@@ -204,6 +210,8 @@
include-authnstatement.tooltip=認証方式とタイムスタンプを含めたステートメントをログインレスポンスに含めるべきか設定します。
sign-documents=ドキュメントを署名する
sign-documents.tooltip=SAML ドキュメントをレルムで署名すべきか設定します。
+sign-documents-redirect-enable-key-info-ext=REDIRECT 署名鍵検索の最適化
+sign-documents-redirect-enable-key-info-ext.tooltip=Keycloak アダプターによって保護された SP の REDIRECT Binding で SAML ドキュメントに署名する際、署名キーの ID を <Extensions> 要素の SAML プロトコルメッセージに含める必要がありますか? これにより、検証のために既知のすべてのキーを試行する代わりに単一のキーを使用するため、署名の検証が最適化されます。
sign-assertions=アサーションを署名する
sign-assertions.tooltip=SAML ドキュメント内のアサーションを署名すべきか設定します。もしドキュメントが既に署名済みの場合は、この設定は不要です。
signature-algorithm=署名アルゴリズム
@@ -237,6 +245,12 @@
idp-sso-relay-state.tooltip=IDP Initiated SSO を行う際の SAML リクエストで送信したい RelayState を設定します。
web-origins=Web オリジン
web-origins.tooltip=許可される CORS オリジンを設定します。有効なリダイレクト URI のすべてのオリジンを許可するには 「+」 を追加してください。すべてのオリジンを許可するには 「*」 を追加してください。
+fine-oidc-endpoint-conf=OpenID Connect の詳細設定
+fine-oidc-endpoint-conf.tooltip=このセクションを展開して、OpenID Connect プロトコルに関連するこのクライアントの高度な設定を行います。
+user-info-signed-response-alg=署名付き User Info レスポンスのアルゴリズム
+user-info-signed-response-alg.tooltip=署名付き User Info エンドポイントのレスポンスに使用する JWA アルゴリズムを設定します。「unsigned」 に設定した場合は、User Info レスポンスは署名されず、application/json 形式で返されます。
+request-object-signature-alg=リクエストオブジェクトの署名アルゴリズム
+request-object-signature-alg.tooltip=クライアントが 「request」 または 「request_uri」 パラメータで指定された OIDC リクエストオブジェクトを送信する際に使用する必要がある、JWA アルゴリズムを設定します。「any」 に設定した場合は、リクエストオブジェクトは任意のアルゴリズム (「none」 を含む) で署名されます。
fine-saml-endpoint-conf=SAML エンドポイントの詳細設定
fine-saml-endpoint-conf.tooltip=アサーションコンシューマおよびシングルログアウトサービスの正確な URL を設定するにはこのセクションを開きます。
assertion-consumer-post-binding-url=アサーションコンシューマサービスの POST Binding URL
@@ -282,6 +296,12 @@
import-certificate=証明書をインポート
gen-client-private-key=クライアントの秘密鍵の生成
generate-private-key=秘密鍵の生成
+kid=Kid
+kid.tooltip=インポートされた JWKS のクライアントの公開鍵の KID (Key ID) を設定します。
+use-jwks-url=JWKS URL の使用
+use-jwks-url.tooltip=有効とした場合は、クライアントの公開鍵が指定の JWKS URL からダウンロードされます。 これにより、クライアントが新しい鍵ペアを生成した際に、新しい鍵が常に再ダウンロードされるため、柔軟性が向上します。無効とした場合は、Keycloak DB の公開鍵 (または証明書) が使用されるため、クライアントの鍵ペアが変更された際には、常に新しい鍵 (または証明書) を Keycloak DB にもインポートする必要があります。
+jwks-url=JWKS URL
+jwks-url.tooltip=JWK 形式のクライアント鍵が格納されている URL を設定します。詳細は JWK の仕様を参照してください。「jwt」 クレデンシャルを持つ keycloak クライアントアダプターを使用している場合は、アプリケーションに「/k_jwks」という接尾辞を付けた URL を使用することができます。例えば、「http://www.myhost.com/myapp/k_jwks」 です。
archive-format=アーカイブ形式
archive-format.tooltip=Java キーストアまたは PKCS12 アーカイブ形式
key-alias=キーエイリアス
@@ -407,7 +427,9 @@
redirect-uri=リダイレクト URI
redirect-uri.tooltip=アイデンティティ プロバイダーの設定で使用するリダイレクト URIです。
alias=エイリアス
+display-name=表示名
identity-provider.alias.tooltip=エイリアスは一意にアイデンティティ プロバイダーを識別するもので、リダイレクト URI の構築にも使用されます。
+identity-provider.display-name.tooltip=アイデンティティ プロバイダーの分かりやすい名前を設定します。
identity-provider.enabled.tooltip=このアイデンティティ プロバイダーの有効/無効を設定します。
authenticate-by-default=デフォルトで認証
identity-provider.authenticate-by-default.tooltip=ログイン画面の表示前に、このプロバイダーでデフォルトで認証試行すべきかどうかを示しています。
@@ -415,6 +437,10 @@
identity-provider.store-tokens.tooltip=ユーザー認証後のトークン格納の有効/無効を設定します。
stored-tokens-readable=読み取り可能なトークンを格納
identity-provider.stored-tokens-readable.tooltip=新しいユーザーが格納されたトークンを読み取り可能かどうかの有効/無効設定です。broker.read-token ロールをアサインします。
+disableUserInfo=User Info の無効
+identity-provider.disableUserInfo.tooltip=追加のユーザー情報を取得する User Info サービスの使用を無効にしますか? デフォルトではこの OIDC サービスを使用します。
+userIp=userIp パラメータの使用
+identity-provider.google-userIp.tooltip=Googleの User Info サービスの呼び出し時に「userIp」クエリパラメータを設定します。これはユーザーの IP アドレスを使用します。Google が User Info サービスへのアクセスを制限している場合に役立ちます。
update-profile-on-first-login=初回ログイン時にプロフィールを更新
on=オン
on-missing-info=情報不足の場合
@@ -455,6 +481,8 @@
prompt.tooltip=認証サーバーは再認証や同意をエンドユーザーに促すかどうかを指定します。
validate-signatures=署名検証
identity-provider.validate-signatures.tooltip=外部 IDP の署名検証の有効/無効を設定します。
+identity-provider.use-jwks-url.tooltip=有効とした場合は、アイデンティティ プロバイダーの公開鍵が指定された JWKS URL からダウンロードされます。アイデンティティ プロバイダーが新しい鍵ペアを生成する際に、新しい鍵が常に再ダウンロードされるため、柔軟性が大幅に向上します。無効とした場合は、Keycloak DB の公開鍵 (または証明書) が使用されるため、アイデンティティ プロバイダーの鍵ペアが変更された際には、常に Keycloak DB に新しい鍵をインポートする必要があります。
+identity-provider.jwks-url.tooltip=JWK 形式のアイデンティティ プロバイダーの鍵が格納されている URL を設定します。詳細は JWK の仕様を参照してください。外部の Keycloak アイデンティティ プロバイダーを使用する場合は、ブローカーの Keycloak が 「http://broker-keycloak:8180」 で実行されておりレルムが 「test」 と仮定すると、「http://broker-keycloak:8180/auth/realms/test/protocol/openid-connect/certs」 のような URL を使用することができます。
validating-public-key=検証用の公開鍵
identity-provider.validating-public-key.tooltip=外部 IDP の署名検証に使用する PEM 形式の公開鍵を設定します。
import-external-idp-config=外部 IDP 設定のインポート
@@ -513,7 +541,6 @@
created=作成日時
back=戻る
initial-access-tokens=初期アクセストークン
-initial-access-tokens.tooltip=動的クライアント登録用の初期アクセストークンです。これらのトークン付きのリクエストは任意のホストから送信することができます。
add-initial-access-tokens=初期アクセストークンを追加
initial-access-token=初期アクセストークン
initial-access.copyPaste.tooltip=後からは取得することはできませんので、このページから離れる前に初期アクセストークンをコピー/ペーストしてください。
@@ -522,16 +549,28 @@
initial-access-token.confirm.text=後からは取得することはできませんので、初期アクセストークンのコピー & ペーストを行ってください
no-initial-access-available=使用可能な初期アクセストークンはありません
-trusted-hosts-legend=クライアント登録用の信頼されたホスト
-trusted-hosts-legend.tooltip=クライアント登録用に信頼されたホストです。これらのホストからのクライアント登録のリクエストは、初期アクセストークンなしで送信することができます。特定ホストからのクライアント登録数は指定された数に制限することができます。
-no-client-trusted-hosts-available=使用可能な信頼されたホストはありません
-add-client-reg-trusted-host=信頼されたホストの追加
-hostname=ホスト名
-client-reg-hostname.tooltip=完全修飾のホスト名またはIPアドレスです。このホスト/アドレスからのクライアント登録のリクエストは信頼され、新しいクライアント登録が許可されます。
-client-reg-count.tooltip=特定ホストからのクライアント登録リクエストを許可する数です。このリミットに達した場合はリスタートする必要があります。
-client-reg-remainingCount.tooltip=このホストからのクライアント登録リクエストの残りのカウントです。このリミットに達した場合はリスタートする必要があります。
-reset-remaining-count=残りのカウントをリセット
-
+client-reg-policies=クライアント登録ポリシー
+client-reg-policy.name.tooltip=ポリシーの表示名を設定します。
+anonymous-policies=Anonymous アクセスのポリシー
+anonymous-policies.tooltip=これらのポリシーはクライアント登録サービスが未認証リクエストによって呼び出された際に使用されます。これは、リクエストには初期アクセストークンも Bearer トークンも含まれないことを意味します。
+auth-policies=認証済みアクセスのポリシー
+auth-policies.tooltip=これらのポリシーは認証されたリクエストによってクライアント登録サービスが呼び出された際に使用されます。これは、リクエストに初期アクセストークンまたは Bearer トークンが含まれていることを意味します。
+policy-name=ポリシー名
+no-client-reg-policies-configured=クライアント登録ポリシーはありません。
+trusted-hosts.label=信頼されたホスト
+trusted-hosts.tooltip=信頼され、クライアント登録サービスを呼び出すことが許可されている、および/またはクライアント URI の値として使用されているホストのリストを設定します。ホスト名または IP アドレスを使用して設定します。スター (例えば 「* .example.com」) を使用すると、example.com のドメイン全体が信頼されます。
+host-sending-registration-request-must-match.label=クライアント登録リクエストを送信するホストの一致が必須
+host-sending-registration-request-must-match.tooltip=有効とした場合は、信頼されたホストまたはドメインから送信されたクライアント登録サービスへのリクエストは許可されます。
+client-uris-must-match.label=クライアント URI の一致が必須
+client-uris-must-match.tooltip=有効とした場合は、すべてのクライアント URI (リダイレクト URI など) は、信頼されたホストまたはドメインと一致する場合にのみ許可されます。
+allowed-protocol-mappers.label=許可されたプロトコルマッパー
+allowed-protocol-mappers.tooltip=許可されたプロトコルマッパープロバイダーのホワイトリストを設定します。ホワイトリストに登録されていないプロトコルマッパーを含むクライアントを登録しようとすると、登録リクエストは拒否されます。
+consent-required-for-all-mappers.label=マッパーの同意が必要
+consent-required-for-all-mappers.tooltip=有効とした場合は、新たに登録されたすべてのプロトコルマッパーは自動的に 「同意が必要」 が有効となります。これは、ユーザーが同意画面で承認する必要があることを意味します。注記: 同意画面は、クライアントが 「同意が必要」 を有効にしている場合にのみ表示されます。そのため、通常は同意が必要なポリシーとともに使用します。
+allowed-client-templates.label=許可されたクライアントテンプレート
+allowed-client-templates.tooltip=新規に登録されたクライアントで使用できるクライアントテンプレートのホワイトリストを設定します。ホワイトリストに登録されていないクライアントテンプレートをクライアントに登録しようとすると拒否されます。デフォルトではホワイトリストは空白のため、クライアントテンプレートは許可されていません。
+max-clients.label=レルムあたりの最大クライアント数
+max-clients.tooltip=レルム内の既存のクライアントの数が設定された制限と同じかそれ以上の場合は、新しいクライアントを登録することはできません。
client-templates=クライアントテンプレート
client-templates.tooltip=クライアントテンプレートでは、複数のクライアントで共有する共通設定を定義することができます。
@@ -685,7 +724,7 @@
search-scope=検索スコープ
ldap.search-scope.tooltip=One Level では、ユーザー DN で指定された DN 内のユーザーのみを検索します。subtree では、サブツリー全体を検索します。より詳細については LDAP のドキュメントを参照してください。
use-truststore-spi=トラストストア SPI を使用
-ldap.use-truststore-spi.tooltip=LDAP 接続で、keycloak-server.json で設定されたトラストストアの トラストストア SPI を使用するかどうかを指定します。 「Always」 は常に使用することを意味します。 「Never」 は使用しないことを意味します。 「Only for ldaps」 は、接続 URL が ldaps の場合に使用することを意味します。keycloak-server.json で設定されていない場合でも、デフォルトの Java CA 証明書 (cacerts) や 「javax.net.ssl.trustStore」 プロパティで指定された証明書が使用される点に注意してください。
+ldap.use-truststore-spi.tooltip=LDAP 接続で、standalone.xml/domain.xml で設定されたトラストストアの トラストストア SPI を使用するかどうかを指定します。 「Always」 は常に使用することを意味します。 「Never」 は使用しないことを意味します。 「Only for ldaps」 は、接続 URL が ldaps の場合に使用することを意味します。standalone.xml/domain.xml で設定されていない場合でも、デフォルトの Java CA 証明書 (cacerts) や 「javax.net.ssl.trustStore」 プロパティで指定された証明書が使用される点に注意してください。
connection-pooling=接続プーリング
ldap.connection-pooling.tooltip=Keycloak は LDAP サーバーへのアクセスで接続プールを使用するかどうかを設定します。
ldap.pagination.tooltip=LDAP サーバーはページネーションをサポートするかどうかを設定します。
@@ -840,6 +879,7 @@
include-representation.tooltip=作成または更新リクエストの JSON Representation を含めるかどうかを設定します。
clear-admin-events.tooltip=データベース内のすべての管理イベントを削除します。
server-version=サーバーのバージョン
+server-profile=サーバープロファイル
info=情報
providers=プロバイダー
server-time=サーバーの時刻
@@ -866,6 +906,8 @@
granted-roles=許可されたロール
granted-protocol-mappers=許可されたプロトコルマッパー
additional-grants=追加の許可
+consent-created-date=作成日
+consent-last-updated-date=最終更新日
revoke=取り消し
new-password=新しいパスワード
password-confirmation=新しいパスワード (確認)
@@ -1030,7 +1072,7 @@
authz-policy-apply-policy=ポリシーの適用
authz-policy-apply-policy.tooltip=このポリシーやアクセス権で定義されたスコープに適用するすべてのポリシーを設定します。
authz-policy-decision-strategy=判定戦略
-authz-policy-decision-strategy.tooltip=判定戦略は、ポリシーの評価方法と最終的な判定方法を決定します。 「Affirmative」 は、全体の判定が positive となるためには、少なくとも1つのポリシーが positive と評価する必要がある、ということを意味します。 「Unanimous」 は、全体の判定が positive となるためには、すべてのポリシーが positive と評価する必要がある、ということを意味します。 「Consensus」 は、positive の数が nagative の数より多くなければならないことを意味します。positive と negative の数が同じ場合は、最終的な判定は negative になります。
+authz-policy-decision-strategy.tooltip=判定戦略は、ポリシーの評価方法と最終的な判定方法を決定します。 「Affirmative」 は、最終判定が positive となるためには、少なくとも1つのポリシーが positive と評価する必要がある、ということを意味します。 「Unanimous」 は、全体の判定が positive となるためには、すべてのポリシーが positive と評価する必要がある、ということを意味します。 「Consensus」 は、positive の数が nagative の数より多くなければならないことを意味します。positive と negative の数が同じ場合は、最終的な判定は negative になります。
authz-policy-decision-strategy-affirmative=Affirmative
authz-policy-decision-strategy-unanimous=Unanimous
authz-policy-decision-strategy-consensus=Consensus
@@ -1053,6 +1095,16 @@
authz-policy-time-not-before.tooltip=ポリシーを許可しない日時を定義します。現在日時がこの値より後か、等しい場合にのみ許可されます。
authz-policy-time-not-on-after=この日時より後
authz-policy-time-not-on-after.tooltip=ポリシーを許可しない日時を定義します。現在日時がこの値より前か、等しい場合にのみ許可されます。
+authz-policy-time-day-month=月の日
+authz-policy-time-day-month.tooltip=ポリシーが許可される月の日を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の日が指定した2つの値の間にあるか、等しい場合のみ許可されます。
+authz-policy-time-month=月
+authz-policy-time-month.tooltip=ポリシーが許可される月を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の月が指定した2つの値の間にあるか、等しい場合のみ許可されます。
+authz-policy-time-year=年
+authz-policy-time-year.tooltip=ポリシーが許可される年を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の年が指定した2つの値の間にあるか、等しい場合のみ許可されます。
+authz-policy-time-hour=時
+authz-policy-time-hour.tooltip=ポリシーが許可される時を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の時が指定した2つの値の間にあるか、等しい場合のみ許可されます。
+authz-policy-time-minute=分
+authz-policy-time-minute.tooltip=ポリシーが許可される分を定義します。2番目のフィールドに値を入力して範囲を指定することもできます。この場合、現在の分が指定した2つの値の間にあるか、等しい場合のみ許可されます。
# Authz Drools Policy Detail
authz-add-drools-policy=Drools ポリシーの追加
@@ -1119,3 +1171,58 @@
authz-evaluation-authorization-data=レスポンス
authz-evaluation-authorization-data.tooltip=認可リクエストの処理の結果として送信された認可データのトークンを表示します。これは、許可を求めたクライアントに対して Keycloak が発行する基本的なものです。現在の認可リクエストで付与されたアクセス権については 「authorization」 クレームを確認してください。
authz-show-authorization-data=認可データを表示
+
+kid=KID
+keys=鍵
+all=すべて
+status=ステータス
+keystore=キーストア
+keystores=キーストア
+add-keystore=キーストアの追加
+add-keystore.placeholder=キーストアの追加...
+view=ビュー
+active=アクティブ
+
+Sunday=日
+Monday=月
+Tuesday=火
+Wednesday=水
+Thursday=木
+Friday=金
+Saturday=土
+
+user-storage-cache-policy=キャッシュ設定
+userStorage.cachePolicy=キャッシュポリシー
+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=このストレージ プロバイダーのキャッシュポリシーを設定します。「DEFAULT」 はグローバルユーザーキャッシュのデフォルト設定と同じになります。「EVICT_DAILY」 は日次でユーザーキャッシュが無効になります。「EVICT_WEEKLY」 は週次でキャッシュが無効になります。「MAX-LIFESPAN」 はキャッシュエントリの生存期間をミリ秒単位で設定します。
+userStorage.cachePolicy.evictionDay=エビクションの日
+userStorage.cachePolicy.evictionDay.tooltip=エントリが無効になる日の曜日を設定します。
+userStorage.cachePolicy.evictionHour=エビクションの時
+userStorage.cachePolicy.evictionHour.tooltip=エントリが無効になる日の時を設定します。
+userStorage.cachePolicy.evictionMinute=エビクションの分
+userStorage.cachePolicy.evictionMinute.tooltip=エントリが無効になる日の分を設定します。
+userStorage.cachePolicy.maxLifespan=最大生存期間
+userStorage.cachePolicy.maxLifespan.tooltip=ユーザーキャッシュエントリの最大生存期間をミリ秒単位で設定します。
+user-origin-link=ストレージオリジン
+
+disable=無効
+disableable-credential-types=無効化可能なタイプ
+credentials.disableable.tooltip=無効にできるクレデンシャルタイプのリストを設定します。
+disable-credential-types=クレデンシャルタイプを無効化
+credentials.disable.tooltip=選択したクレデンシャルタイプを無効にするには、ボタンをクリックします。
+credential-types=クレデンシャルタイプ
+manage-user-password=パスワードの管理
+disable-credentials=クレデンシャルの無効化
+credential-reset-actions=クレデンシャルのリセット
+ldap-mappers=LDAP マッパー
+create-ldap-mapper=LDAP マッパーの作成
+
+
+
+
+
+
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_no.properties /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_no.properties
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_no.properties 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/admin-messages_no.properties 2017-01-03 09:29:30.000000000 -0500
@@ -1047,6 +1047,11 @@
authz-no-users-assigned=Ingen tildelte brukere.
authz-policy-user-users.tooltip=Spesifiser bruker(e) som tillates av denne policien.
+ # Authz Client Policy Detail
+authz-add-client-policy=Legg til policy for klient
+authz-no-clients-assigned=Ingen tildelte klienter.
+authz-policy-client-clients.tooltip=Spesifiser klient(er) som tillates av denne policien.
+
# Authz Time Policy Detail
authz-add-time-policy=Legg til policy for tid
authz-policy-time-not-before.tooltip=Definerer tiden f\u00F8r policien M\u00C5 IKKE innvilges. Denne innvilges kun om gjeldende dato/tid er f\u00F8r eller lik denne verdien.
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/messages_ja.properties /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/messages_ja.properties
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/messages/messages_ja.properties 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/messages/messages_ja.properties 2017-01-03 09:29:30.000000000 -0500
@@ -12,4 +12,14 @@
ldapErrorMissingClientId=レルムロールマッピングを使用しない場合は、クライアント ID は設定内で提供される必要があります。
ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=グループ継承と UID メンバーシップタイプを一緒に保存することはできません。
ldapErrorCantWriteOnlyForReadOnlyLdap=LDAP プロバイダーモードが WRITABLE ではない場合は、write only を設定することはできません。
-ldapErrorCantWriteOnlyAndReadOnly=write-only と read-only を一緒に設定することはできません。
\ No newline at end of file
+ldapErrorCantWriteOnlyAndReadOnly=write-only と read-only を一緒に設定することはできません。
+
+clientRedirectURIsFragmentError=リダイレクト URI に URI フラグメントを含めることはできません。
+clientRootURLFragmentError=ルート URL に URL フラグメントを含めることはできません。
+
+pairwiseMalformedClientRedirectURI=クライアントに無効なリダイレクト URI が含まれていました。
+pairwiseClientRedirectURIsMissingHost=クライアントのリダイレクト URI には有効なホストコンポーネントが含まれている必要があります。
+pairwiseClientRedirectURIsMultipleHosts=設定された Sector Identifier URI がない場合は、クライアントのリダイレクト URI は複数のホストコンポーネントを含むことはできません。
+pairwiseMalformedSectorIdentifierURI=不正な Sector Identifier URI です。
+pairwiseFailedToGetRedirectURIs=Sector Identifier URI からリダイレクト URI を取得できませんでした。
+pairwiseRedirectURIsMismatch=クライアントのリダイレクト URI は、Sector Identifier URI からフェッチされたリダイレクト URI と一致しません。
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js /tmp/keycloak/jboss_keycloak-postgres-2.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/app.js 2017-01-03 09:29:30.000000000 -0500
@@ -1489,6 +1489,26 @@
},
controller : 'LDAPUserStorageCtrl'
})
+ .when('/create/user-storage/:realm/providers/kerberos', {
+ templateUrl : resourceUrl + '/partials/user-storage-kerberos.html',
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ instance : function() {
+ return {
+
+ };
+ },
+ providerId : function($route) {
+ return "kerberos";
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
+ }
+ },
+ controller : 'GenericUserStorageCtrl'
+ })
.when('/create/user-storage/:realm/providers/:provider', {
templateUrl : resourceUrl + '/partials/user-storage-generic.html',
resolve : {
@@ -1527,6 +1547,24 @@
},
controller : 'LDAPUserStorageCtrl'
})
+ .when('/realms/:realm/user-storage/providers/kerberos/:componentId', {
+ templateUrl : resourceUrl + '/partials/user-storage-kerberos.html',
+ resolve : {
+ realm : function(RealmLoader) {
+ return RealmLoader();
+ },
+ instance : function(ComponentLoader) {
+ return ComponentLoader();
+ },
+ providerId : function($route) {
+ return "kerberos";
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
+ }
+ },
+ controller : 'GenericUserStorageCtrl'
+ })
.when('/realms/:realm/user-storage/providers/:provider/:componentId', {
templateUrl : resourceUrl + '/partials/user-storage-generic.html',
resolve : {
@@ -1611,150 +1649,6 @@
},
controller : 'UserFederationCtrl'
})
- .when('/realms/:realm/user-federation/providers/ldap/:instance', {
- templateUrl : resourceUrl + '/partials/federated-ldap.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- }
- },
- controller : 'LDAPCtrl'
- })
- .when('/create/user-federation/:realm/providers/ldap', {
- templateUrl : resourceUrl + '/partials/federated-ldap.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function() {
- return {};
- }
- },
- controller : 'LDAPCtrl'
- })
- .when('/realms/:realm/user-federation/providers/kerberos/:instance', {
- templateUrl : resourceUrl + '/partials/federated-kerberos.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- },
- providerFactory : function() {
- return { id: "kerberos" };
- }
- },
- controller : 'GenericUserFederationCtrl'
- })
- .when('/create/user-federation/:realm/providers/kerberos', {
- templateUrl : resourceUrl + '/partials/federated-kerberos.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function() {
- return {};
- },
- providerFactory : function() {
- return { id: "kerberos" };
- }
- },
- controller : 'GenericUserFederationCtrl'
- })
- .when('/create/user-federation/:realm/providers/:provider', {
- templateUrl : resourceUrl + '/partials/federated-generic.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function() {
- return {
-
- };
- },
- providerFactory : function(UserFederationFactoryLoader) {
- return UserFederationFactoryLoader();
- }
- },
- controller : 'GenericUserFederationCtrl'
- })
- .when('/realms/:realm/user-federation/providers/:provider/:instance', {
- templateUrl : resourceUrl + '/partials/federated-generic.html',
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- instance : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- },
- providerFactory : function(UserFederationFactoryLoader) {
- return UserFederationFactoryLoader();
- }
- },
- controller : 'GenericUserFederationCtrl'
- })
- .when('/realms/:realm/user-federation/providers/:provider/:instance/mappers', {
- templateUrl : function(params){ return resourceUrl + '/partials/federated-mappers.html'; },
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- provider : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- },
- mapperTypes : function(UserFederationMapperTypesLoader) {
- return UserFederationMapperTypesLoader();
- },
- mappers : function(UserFederationMappersLoader) {
- return UserFederationMappersLoader();
- }
- },
- controller : 'UserFederationMapperListCtrl'
- })
- .when('/realms/:realm/user-federation/providers/:provider/:instance/mappers/:mapperId', {
- templateUrl : function(params){ return resourceUrl + '/partials/federated-mapper-detail.html'; },
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- provider : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- },
- mapperTypes : function(UserFederationMapperTypesLoader) {
- return UserFederationMapperTypesLoader();
- },
- mapper : function(UserFederationMapperLoader) {
- return UserFederationMapperLoader();
- },
- clients : function(ClientListLoader) {
- return ClientListLoader();
- }
- },
- controller : 'UserFederationMapperCtrl'
- })
- .when('/create/user-federation-mappers/:realm/:provider/:instance', {
- templateUrl : function(params){ return resourceUrl + '/partials/federated-mapper-detail.html'; },
- resolve : {
- realm : function(RealmLoader) {
- return RealmLoader();
- },
- provider : function(UserFederationInstanceLoader) {
- return UserFederationInstanceLoader();
- },
- mapperTypes : function(UserFederationMapperTypesLoader) {
- return UserFederationMapperTypesLoader();
- },
- clients : function(ClientListLoader) {
- return ClientListLoader();
- }
- },
- controller : 'UserFederationMapperCreateCtrl'
- })
-
.when('/realms/:realm/defense/headers', {
templateUrl : resourceUrl + '/partials/defense-headers.html',
resolve : {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-app.js /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-app.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-app.js 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-app.js 2017-01-03 09:29:30.000000000 -0500
@@ -263,6 +263,28 @@
}
},
controller: 'ResourceServerPolicyUserDetailCtrl'
+ }).when('/realms/:realm/clients/:client/authz/resource-server/policy/client/create', {
+ templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-client-detail.html',
+ resolve: {
+ realm: function (RealmLoader) {
+ return RealmLoader();
+ },
+ client : function(ClientLoader) {
+ return ClientLoader();
+ }
+ },
+ controller: 'ResourceServerPolicyClientDetailCtrl'
+ }).when('/realms/:realm/clients/:client/authz/resource-server/policy/client/:id', {
+ templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-client-detail.html',
+ resolve: {
+ realm: function (RealmLoader) {
+ return RealmLoader();
+ },
+ client : function(ClientLoader) {
+ return ClientLoader();
+ }
+ },
+ controller: 'ResourceServerPolicyClientDetailCtrl'
}).when('/realms/:realm/clients/:client/authz/resource-server/policy/role/create', {
templateUrl: resourceUrl + '/partials/authz/policy/provider/resource-server-policy-role-detail.html',
resolve: {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-controller.js /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-controller.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-controller.js 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-controller.js 2017-01-03 09:29:30.000000000 -0500
@@ -86,10 +86,13 @@
$scope.query = {
realm: realm.realm,
client : client.id,
+ deep: false,
max : 20,
first : 0
};
+ $scope.listSizes = [5, 10, 20];
+
ResourceServer.get({
realm : $route.current.params.realm,
client : client.id
@@ -124,10 +127,49 @@
$scope.searchQuery = function() {
$scope.searchLoaded = false;
- $scope.resources = ResourceServerResource.query($scope.query, function() {
+ ResourceServerResource.query($scope.query, function(response) {
$scope.searchLoaded = true;
$scope.lastSearch = $scope.query.search;
+ $scope.resources = response;
+ if ($scope.detailsFilter) {
+ $scope.showDetails();
+ }
+ });
+ };
+
+ $scope.loadDetails = function (resource) {
+ if (resource.details) {
+ resource.details.loaded = !resource.details.loaded;
+ return;
+ }
+
+ resource.details = {loaded: false};
+
+ ResourceServerResource.scopes({
+ realm : $route.current.params.realm,
+ client : client.id,
+ rsrid : resource._id
+ }, function(response) {
+ resource.scopes = response;
+ ResourceServerResource.permissions({
+ realm : $route.current.params.realm,
+ client : client.id,
+ rsrid : resource._id
+ }, function(response) {
+ resource.policies = response;
+ resource.details.loaded = true;
+ });
});
+ }
+
+ $scope.showDetails = function(item) {
+ if (item) {
+ $scope.loadDetails(item);
+ } else {
+ for (i = 0; i < $scope.resources.length; i++) {
+ $scope.loadDetails($scope.resources[i]);
+ }
+ }
};
});
@@ -135,9 +177,36 @@
$scope.realm = realm;
$scope.client = client;
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.scopes = data;
- });
+ $scope.scopesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerScope.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ return object.name;
+ },
+ formatSelection: function(object, container, query) {
+ return object.name;
+ }
+ };
var $instance = this;
@@ -165,6 +234,9 @@
}, true);
$scope.save = function() {
+ for (i = 0; i < $scope.resource.scopes.length; i++) {
+ delete $scope.resource.scopes[i].text;
+ }
$instance.checkNameAvailability(function () {
ResourceServerResource.save({realm : realm.realm, client : $scope.client.id}, $scope.resource, function(data) {
$location.url("/realms/" + realm.realm + "/clients/" + $scope.client.id + "/authz/resource-server/resource/" + data._id);
@@ -186,17 +258,9 @@
data.scopes = [];
}
- if (!data.policies) {
- data.policies = [];
- }
-
$scope.resource = angular.copy(data);
$scope.changed = false;
- for (i = 0; i < $scope.resource.scopes.length; i++) {
- $scope.resource.scopes[i] = $scope.resource.scopes[i].name;
- }
-
$scope.originalResource = angular.copy($scope.resource);
$scope.$watch('resource', function() {
@@ -206,6 +270,9 @@
}, true);
$scope.save = function() {
+ for (i = 0; i < $scope.resource.scopes.length; i++) {
+ delete $scope.resource.scopes[i].text;
+ }
$instance.checkNameAvailability(function () {
ResourceServerResource.update({realm : realm.realm, client : $scope.client.id, rsrid : $scope.resource._id}, $scope.resource, function() {
$route.reload();
@@ -215,22 +282,28 @@
}
$scope.remove = function() {
- var msg = "";
-
- if ($scope.resource.policies.length > 0) {
- msg = "<p>This resource is referenced in some policies:</p>";
- msg += "<ul>";
- for (i = 0; i < $scope.resource.policies.length; i++) {
- msg+= "<li><strong>" + $scope.resource.policies[i].name + "</strong></li>";
+ ResourceServerResource.permissions({
+ realm : $route.current.params.realm,
+ client : client.id,
+ rsrid : $scope.resource._id
+ }, function (permissions) {
+ var msg = "";
+
+ if (permissions.length > 0 && !$scope.deleteConsent) {
+ msg = "<p>This resource is referenced in some policies:</p>";
+ msg += "<ul>";
+ for (i = 0; i < permissions.length; i++) {
+ msg+= "<li><strong>" + permissions[i].name + "</strong></li>";
+ }
+ msg += "</ul>";
+ msg += "<p>If you remove this resource, the policies above will be affected and will not be associated with this resource anymore.</p>";
}
- msg += "</ul>";
- msg += "<p>If you remove this resource, the policies above will be affected and will not be associated with this resource anymore.</p>";
- }
- AuthzDialog.confirmDeleteWithMsg($scope.resource.name, "Resource", msg, function() {
- ResourceServerResource.delete({realm : realm.realm, client : $scope.client.id, rsrid : $scope.resource._id}, null, function() {
- $location.url("/realms/" + realm.realm + "/clients/" + $scope.client.id + "/authz/resource-server/resource");
- Notifications.success("The resource has been deleted.");
+ AuthzDialog.confirmDeleteWithMsg($scope.resource.name, "Resource", msg, function() {
+ ResourceServerResource.delete({realm : realm.realm, client : $scope.client.id, rsrid : $scope.resource._id}, null, function() {
+ $location.url("/realms/" + realm.realm + "/clients/" + $scope.client.id + "/authz/resource-server/resource");
+ Notifications.success("The resource has been deleted.");
+ });
});
});
}
@@ -269,10 +342,13 @@
$scope.query = {
realm: realm.realm,
client : client.id,
+ deep: false,
max : 20,
first : 0
};
+ $scope.listSizes = [5, 10, 20];
+
ResourceServer.get({
realm : $route.current.params.realm,
client : client.id
@@ -304,13 +380,52 @@
$scope.searchQuery();
}
- $scope.searchQuery = function() {
+ $scope.searchQuery = function(detailsFilter) {
$scope.searchLoaded = false;
- $scope.scopes = ResourceServerScope.query($scope.query, function() {
+ ResourceServerScope.query($scope.query, function(response) {
+ $scope.scopes = response;
$scope.searchLoaded = true;
$scope.lastSearch = $scope.query.search;
+ if ($scope.detailsFilter) {
+ $scope.showDetails();
+ }
+ });
+ };
+
+ $scope.loadDetails = function (scope) {
+ if (scope.details) {
+ scope.details.loaded = !scope.details.loaded;
+ return;
+ }
+
+ scope.details = {loaded: false};
+
+ ResourceServerScope.resources({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : scope.id
+ }, function(response) {
+ scope.resources = response;
+ ResourceServerScope.permissions({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : scope.id
+ }, function(response) {
+ scope.policies = response;
+ scope.details.loaded = true;
+ });
});
+ }
+
+ $scope.showDetails = function(item) {
+ if (item) {
+ $scope.loadDetails(item);
+ } else {
+ for (i = 0; i < $scope.scopes.length; i++) {
+ $scope.loadDetails($scope.scopes[i]);
+ }
+ }
};
});
@@ -377,22 +492,28 @@
}
$scope.remove = function() {
- var msg = "";
-
- if ($scope.scope.policies.length > 0) {
- msg = "<p>This resource is referenced in some policies:</p>";
- msg += "<ul>";
- for (i = 0; i < $scope.scope.policies.length; i++) {
- msg+= "<li><strong>" + $scope.scope.policies[i].name + "</strong></li>";
+ ResourceServerScope.permissions({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : $scope.scope.id
+ }, function (permissions) {
+ var msg = "";
+
+ if (permissions.length > 0 && !$scope.deleteConsent) {
+ msg = "<p>This scope is referenced in some policies:</p>";
+ msg += "<ul>";
+ for (i = 0; i < permissions.length; i++) {
+ msg+= "<li><strong>" + permissions[i].name + "</strong></li>";
+ }
+ msg += "</ul>";
+ msg += "<p>If you remove this scope, the policies above will be affected and will not be associated with this scope anymore.</p>";
}
- msg += "</ul>";
- msg += "<p>If you remove this resource, the policies above will be affected and will not be associated with this resource anymore.</p>";
- }
- AuthzDialog.confirmDeleteWithMsg($scope.scope.name, "Scope", msg, function() {
- ResourceServerScope.delete({realm : realm.realm, client : $scope.client.id, id : $scope.scope.id}, null, function() {
- $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/scope");
- Notifications.success("The scope has been deleted.");
+ AuthzDialog.confirmDeleteWithMsg($scope.scope.name, "Scope", msg, function() {
+ ResourceServerScope.delete({realm : realm.realm, client : $scope.client.id, id : $scope.scope.id}, null, function() {
+ $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/scope");
+ Notifications.success("The scope has been deleted.");
+ });
});
});
}
@@ -432,10 +553,12 @@
realm: realm.realm,
client : client.id,
permission: false,
- max : 20,
+ max: 20,
first : 0
};
+ $scope.listSizes = [5, 10, 20];
+
PolicyProvider.query({
realm : $route.current.params.realm,
client : client.id
@@ -481,18 +604,42 @@
$scope.searchLoaded = false;
ResourceServerPolicy.query($scope.query, function(data) {
- $scope.policies = [];
-
- for (i = 0; i < data.length; i++) {
- if (data[i].type != 'resource' && data[i].type != 'scope') {
- $scope.policies.push(data[i]);
- }
- }
-
+ $scope.policies = data;
$scope.searchLoaded = true;
$scope.lastSearch = $scope.query.search;
+ if ($scope.detailsFilter) {
+ $scope.showDetails();
+ }
});
};
+
+ $scope.loadDetails = function (policy) {
+ if (policy.details) {
+ policy.details.loaded = !policy.details.loaded;
+ return;
+ }
+
+ policy.details = {loaded: false};
+
+ ResourceServerPolicy.dependentPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(response) {
+ policy.dependentPolicies = response;
+ policy.details.loaded = true;
+ });
+ }
+
+ $scope.showDetails = function(item) {
+ if (item) {
+ $scope.loadDetails(item);
+ } else {
+ for (i = 0; i < $scope.policies.length; i++) {
+ $scope.loadDetails($scope.policies[i]);
+ }
+ }
+ };
});
module.controller('ResourceServerPermissionCtrl', function($scope, $http, $route, $location, realm, ResourceServer, ResourceServerPolicy, PolicyProvider, client) {
@@ -508,6 +655,8 @@
first : 0
};
+ $scope.listSizes = [5, 10, 20];
+
PolicyProvider.query({
realm : $route.current.params.realm,
client : client.id
@@ -553,17 +702,41 @@
$scope.searchLoaded = false;
ResourceServerPolicy.query($scope.query, function(data) {
- $scope.policies = [];
-
- for (i = 0; i < data.length; i++) {
- if (data[i].type == 'resource' || data[i].type == 'scope') {
- $scope.policies.push(data[i]);
- }
- }
-
+ $scope.policies = data;
$scope.searchLoaded = true;
$scope.lastSearch = $scope.query.search;
+ if ($scope.detailsFilter) {
+ $scope.showDetails();
+ }
+ });
+ };
+
+ $scope.loadDetails = function (policy) {
+ if (policy.details) {
+ policy.details.loaded = !policy.details.loaded;
+ return;
+ }
+
+ policy.details = {loaded: false};
+
+ ResourceServerPolicy.associatedPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(response) {
+ policy.associatedPolicies = response;
+ policy.details.loaded = true;
});
+ }
+
+ $scope.showDetails = function(item) {
+ if (item) {
+ $scope.loadDetails(item);
+ } else {
+ for (i = 0; i < $scope.policies.length; i++) {
+ $scope.loadDetails($scope.policies[i]);
+ }
+ }
};
});
@@ -623,19 +796,64 @@
},
onInit : function() {
- ResourceServerResource.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.resources = data;
- });
-
- ResourceServerPolicy.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.policies = [];
+ $scope.resourcesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ id: function(resource){ return resource._id; },
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerResource.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
+ }
+ };
- for (i = 0; i < data.length; i++) {
- if (data[i].type != 'resource' && data[i].type != 'scope') {
- $scope.policies.push(data[i]);
+ $scope.policiesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
}
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ permission: false,
+ name: query.term.trim(),
+ max : 20,
+ first : 0
+ };
+ ResourceServerPolicy.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
}
- });
+ };
$scope.applyToResourceType = function() {
if ($scope.policy.config.default) {
@@ -648,30 +866,69 @@
onInitUpdate : function(policy) {
policy.config.default = eval(policy.config.default);
- policy.config.resources = eval(policy.config.resources);
- policy.config.applyPolicies = eval(policy.config.applyPolicies);
+ policy.config.resources = {};
+ ResourceServerPolicy.resources({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(resources) {
+ resources[0].text = resources[0].name;
+ $scope.policy.config.resources = resources[0];
+ });
+
+ policy.config.applyPolicies = [];
+ ResourceServerPolicy.associatedPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(policies) {
+ for (i = 0; i < policies.length; i++) {
+ policies[i].text = policies[i].name;
+ $scope.policy.config.applyPolicies.push(policies[i]);
+ }
+ });
},
onUpdate : function() {
- $scope.policy.config.resources = JSON.stringify($scope.policy.config.resources);
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ var policies = [];
+
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
+ }
+
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
},
onInitCreate : function(newPolicy) {
newPolicy.decisionStrategy = 'UNANIMOUS';
newPolicy.config = {};
- newPolicy.config.resources = '';
+ newPolicy.config.resources = null;
var resourceId = $location.search()['rsrid'];
if (resourceId) {
- newPolicy.config.resources = [resourceId];
+ ResourceServerResource.get({
+ realm : $route.current.params.realm,
+ client : client.id,
+ rsrid : resourceId
+ }, function(data) {
+ data.text = data.name;
+ $scope.policy.config.resources = data;
+ });
}
},
onCreate : function() {
- $scope.policy.config.resources = JSON.stringify($scope.policy.config.resources);
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+
+ var policies = [];
+
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
+ }
+
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
}
}, realm, client, $scope);
});
@@ -687,105 +944,241 @@
},
onInit : function() {
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.scopes = data;
- });
-
- ResourceServerResource.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.resources = data;
- });
-
- ResourceServerPolicy.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.policies = [];
-
- for (i = 0; i < data.length; i++) {
- if (data[i].type != 'resource' && data[i].type != 'scope') {
- $scope.policies.push(data[i]);
+ $scope.scopesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
}
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerScope.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
}
- });
-
- $scope.resolveScopes = function(policy, keepScopes) {
- if (!keepScopes) {
- policy.config.scopes = [];
- }
+ };
- if (!policy) {
- policy = $scope.policy;
+ $scope.resourcesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ id: function(resource){ return resource._id; },
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerResource.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
}
+ };
- if (policy.config.resources != null) {
- ResourceServerResource.get({
- realm : $route.current.params.realm,
+ $scope.policiesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
client : client.id,
- rsrid : policy.config.resources
- }, function(data) {
- $scope.scopes = data.scopes;
+ permission: false,
+ name: query.term.trim(),
+ max : 20,
+ first : 0
+ };
+ ResourceServerPolicy.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
});
- } else {
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.scopes = data;
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
+ }
+ };
+
+ $scope.selectResource = function() {
+ if ($scope.policy.config.resources) {
+ ResourceServerResource.scopes({
+ realm: $route.current.params.realm,
+ client: client.id,
+ rsrid: $scope.policy.config.resources._id
+ }, function (data) {
+ $scope.policy.config.resources.scopes = data;
});
}
}
},
onInitUpdate : function(policy) {
- if (policy.config.resources) {
- policy.config.resources = eval(policy.config.resources);
+ policy.config.resources = eval(policy.config.resources);
- if (policy.config.resources.length > 0) {
- policy.config.resources = policy.config.resources[0];
- } else {
- policy.config.resources = null;
- }
+ if (policy.config.resources == null) {
+ policy.config.resources = [];
}
- $scope.resolveScopes(policy, true);
+ if (policy.config.resources.length > 0) {
+ ResourceServerResource.query({
+ realm: $route.current.params.realm,
+ client: client.id,
+ _id: policy.config.resources[0],
+ deep: false
+ }, function (data) {
+ data[0].text = data[0].name;
+ $scope.policy.config.resources = data[0];
+ ResourceServerResource.scopes({
+ realm: $route.current.params.realm,
+ client: client.id,
+ rsrid: policy.config.resources[0]
+ }, function (data) {
+ $scope.policy.config.resources.scopes = data;
+ });
+ ResourceServerPolicy.scopes({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(scopes) {
+ $scope.policy.config.scopes = [];
+ for (i = 0; i < scopes.length; i++) {
+ $scope.policy.config.scopes.push(scopes[i].id);
+ }
+ });
+ });
+ } else {
+ policy.config.resources = null;
+ ResourceServerPolicy.scopes({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(scopes) {
+ $scope.policy.config.scopes = [];
+ for (i = 0; i < scopes.length; i++) {
+ scopes[i].text = scopes[i].name;
+ $scope.policy.config.scopes.push(scopes[i]);
+ }
+ });
+ }
- policy.config.applyPolicies = eval(policy.config.applyPolicies);
- policy.config.scopes = eval(policy.config.scopes);
+ policy.config.applyPolicies = [];
+ ResourceServerPolicy.associatedPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(policies) {
+ for (i = 0; i < policies.length; i++) {
+ policies[i].text = policies[i].name;
+ $scope.policy.config.applyPolicies.push(policies[i]);
+ }
+ });
},
onUpdate : function() {
if ($scope.policy.config.resources != null) {
- var resources = undefined;
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ }
- if ($scope.policy.config.resources.length != 0) {
- resources = JSON.stringify([$scope.policy.config.resources])
+ var scopes = [];
+
+ for (i = 0; i < $scope.policy.config.scopes.length; i++) {
+ if ($scope.policy.config.resources == null) {
+ scopes.push($scope.policy.config.scopes[i].id);
+ } else {
+ scopes.push($scope.policy.config.scopes[i]);
}
+ }
- $scope.policy.config.resources = resources;
+ $scope.policy.config.scopes = JSON.stringify(scopes);
+
+ var policies = [];
+
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
}
- $scope.policy.config.scopes = JSON.stringify($scope.policy.config.scopes);
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
},
onInitCreate : function(newPolicy) {
newPolicy.decisionStrategy = 'UNANIMOUS';
newPolicy.config = {};
- newPolicy.config.resources = '';
+ newPolicy.config.resources = null;
var scopeId = $location.search()['scpid'];
if (scopeId) {
- newPolicy.config.scopes = [scopeId];
+ ResourceServerScope.get({
+ realm: $route.current.params.realm,
+ client: client.id,
+ id: scopeId,
+ }, function (data) {
+ data.text = data.name;
+ if (!$scope.policy.config.scopes) {
+ $scope.policy.config.scopes = [];
+ }
+ $scope.policy.config.scopes.push(data);
+ });
}
},
onCreate : function() {
if ($scope.policy.config.resources != null) {
- var resources = undefined;
+ $scope.policy.config.resources = JSON.stringify([$scope.policy.config.resources._id]);
+ }
+
+ var scopes = [];
- if ($scope.policy.config.resources.length != 0) {
- resources = JSON.stringify([$scope.policy.config.resources])
+ for (i = 0; i < $scope.policy.config.scopes.length; i++) {
+ if ($scope.policy.config.scopes[i].id) {
+ scopes.push($scope.policy.config.scopes[i].id);
+ } else {
+ scopes.push($scope.policy.config.scopes[i]);
}
+ }
+
+ $scope.policy.config.scopes = JSON.stringify(scopes);
+
+ var policies = [];
- $scope.policy.config.resources = resources;
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
}
- $scope.policy.config.scopes = JSON.stringify($scope.policy.config.scopes);
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
}
}, realm, client, $scope);
});
@@ -883,6 +1276,99 @@
}, realm, client, $scope);
});
+module.controller('ResourceServerPolicyClientDetailCtrl', function($scope, $route, realm, client, PolicyController, Client) {
+ PolicyController.onInit({
+ getPolicyType : function() {
+ return "client";
+ },
+
+ onInit : function() {
+ $scope.clientsUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ Client.query({realm: $route.current.params.realm, search: query.term.trim(), max: 20}, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ return object.clientId;
+ }
+ };
+
+ $scope.selectedClients = [];
+
+ $scope.selectClient = function(client) {
+ if (!client || !client.id) {
+ return;
+ }
+
+ $scope.selectedClient = null;
+
+ for (var i = 0; i < $scope.selectedClients.length; i++) {
+ if ($scope.selectedClients[i].id == client.id) {
+ return;
+ }
+ }
+
+ $scope.selectedClients.push(client);
+ }
+
+ $scope.removeFromList = function(list, index) {
+ list.splice(index, 1);
+ }
+ },
+
+ onInitUpdate : function(policy) {
+ var selectedClients = [];
+
+ if (policy.config.clients) {
+ var clients = eval(policy.config.clients);
+
+ for (var i = 0; i < clients.length; i++) {
+ Client.get({realm: $route.current.params.realm, client: clients[i]}, function(data) {
+ selectedClients.push(data);
+ $scope.selectedClients = angular.copy(selectedClients);
+ });
+ }
+ }
+
+ $scope.$watch('selectedClients', function() {
+ if (!angular.equals($scope.selectedClients, selectedClients)) {
+ $scope.changed = true;
+ }
+ }, true);
+ },
+
+ onUpdate : function() {
+ var clients = [];
+
+ for (var i = 0; i < $scope.selectedClients.length; i++) {
+ clients.push($scope.selectedClients[i].id);
+ }
+
+ $scope.policy.config.clients = JSON.stringify(clients);
+ },
+
+ onCreate : function() {
+ var clients = [];
+
+ for (var i = 0; i < $scope.selectedClients.length; i++) {
+ clients.push($scope.selectedClients[i].id);
+ }
+
+ $scope.policy.config.clients = JSON.stringify(clients);
+ }
+ }, realm, client, $scope);
+});
+
module.controller('ResourceServerPolicyRoleDetailCtrl', function($scope, $route, realm, client, Client, ClientRole, PolicyController, Role, RoleById) {
PolicyController.onInit({
getPolicyType : function() {
@@ -1157,23 +1643,58 @@
},
onInit : function() {
- ResourceServerPolicy.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.policies = [];
-
- for (i = 0; i < data.length; i++) {
- if (data[i].type != 'resource' && data[i].type != 'scope') {
- $scope.policies.push(data[i]);
+ $scope.policiesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
}
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ permission: false,
+ name: query.term.trim(),
+ max : 20,
+ first : 0
+ };
+ ResourceServerPolicy.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
}
- });
+ };
},
onInitUpdate : function(policy) {
- policy.config.applyPolicies = eval(policy.config.applyPolicies);
+ policy.config.applyPolicies = [];
+ ResourceServerPolicy.associatedPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : policy.id
+ }, function(policies) {
+ for (i = 0; i < policies.length; i++) {
+ policies[i].text = policies[i].name;
+ $scope.policy.config.applyPolicies.push(policies[i]);
+ }
+ });
},
onUpdate : function() {
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+ var policies = [];
+
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
+ }
+
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
},
onInitCreate : function(newPolicy) {
@@ -1182,7 +1703,13 @@
},
onCreate : function() {
- $scope.policy.config.applyPolicies = JSON.stringify($scope.policy.config.applyPolicies);
+ var policies = [];
+
+ for (i = 0; i < $scope.policy.config.applyPolicies.length; i++) {
+ policies.push($scope.policy.config.applyPolicies[i].id);
+ }
+
+ $scope.policy.config.applyPolicies = JSON.stringify(policies);
}
}, realm, client, $scope);
});
@@ -1264,9 +1791,9 @@
}
} else {
ResourceServerPolicy.get({
- realm : $route.current.params.realm,
+ realm: realm.realm,
client : client.id,
- id : $route.current.params.id,
+ id: $route.current.params.id
}, function(data) {
$scope.originalPolicy = data;
var policy = angular.copy(data);
@@ -1315,25 +1842,31 @@
$scope.remove = function() {
var msg = "";
- if ($scope.policy.dependentPolicies.length > 0) {
- msg = "<p>This policy is being used by other policies:</p>";
- msg += "<ul>";
- for (i = 0; i < $scope.policy.dependentPolicies.length; i++) {
- msg+= "<li><strong>" + $scope.policy.dependentPolicies[i].name + "</strong></li>";
+ ResourceServerPolicy.dependentPolicies({
+ realm : $route.current.params.realm,
+ client : client.id,
+ id : $scope.policy.id
+ }, function (dependentPolicies) {
+ if (dependentPolicies.length > 0 && !$scope.deleteConsent) {
+ msg = "<p>This policy is being used by other policies:</p>";
+ msg += "<ul>";
+ for (i = 0; i < dependentPolicies.length; i++) {
+ msg+= "<li><strong>" + dependentPolicies[i].name + "</strong></li>";
+ }
+ msg += "</ul>";
+ msg += "<p>If you remove this policy, the policies above will be affected and will not be associated with this policy anymore.</p>";
}
- msg += "</ul>";
- msg += "<p>If you remove this policy, the policies above will be affected and will not be associated with this policy anymore.</p>";
- }
- AuthzDialog.confirmDeleteWithMsg($scope.policy.name, "Policy", msg, function() {
- ResourceServerPolicy.delete({realm : $scope.realm.realm, client : $scope.client.id, id : $scope.policy.id}, null, function() {
- if (delegate.isPermission()) {
- $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/permission");
- Notifications.success("The permission has been deleted.");
- } else {
- $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/policy");
- Notifications.success("The policy has been deleted.");
- }
+ AuthzDialog.confirmDeleteWithMsg($scope.policy.name, "Policy", msg, function() {
+ ResourceServerPolicy.delete({realm : $scope.realm.realm, client : $scope.client.id, id : $scope.policy.id}, null, function() {
+ if (delegate.isPermission()) {
+ $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/permission");
+ Notifications.success("The permission has been deleted.");
+ } else {
+ $location.url("/realms/" + realm.realm + "/clients/" + client.id + "/authz/resource-server/policy");
+ Notifications.success("The policy has been deleted.");
+ }
+ });
});
});
}
@@ -1372,13 +1905,8 @@
$scope.authzRequest.context = {};
$scope.authzRequest.context.attributes = {};
$scope.authzRequest.roleIds = [];
- $scope.newResource = {};
$scope.resultUrl = resourceUrl + '/partials/authz/policy/resource-server-policy-evaluate-result.html';
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.scopes = data;
- });
-
$scope.addContextAttribute = function() {
if (!$scope.newContextAttribute.value || $scope.newContextAttribute.value == '') {
Notifications.error("You must provide a value to a context attribute.");
@@ -1480,33 +2008,39 @@
}
$scope.setApplyToResourceType = function() {
- if ($scope.applyResourceType) {
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.scopes = data;
- });
- }
-
delete $scope.newResource;
$scope.authzRequest.resources = [];
}
$scope.addResource = function() {
- var resource = {};
+ var resource = angular.copy($scope.newResource);
+
+ if (!resource) {
+ resource = {};
+ }
- resource.id = $scope.newResource._id;
+ delete resource.text;
- for (i = 0; i < $scope.resources.length; i++) {
- if ($scope.resources[i]._id == resource.id) {
- resource.name = $scope.resources[i].name;
- break;
+ if (!$scope.newScopes || (resource._id != null && $scope.newScopes.length > 0 && $scope.newScopes[0].id)) {
+ $scope.newScopes = [];
+ }
+
+ var scopes = [];
+
+ for (i = 0; i < $scope.newScopes.length; i++) {
+ if ($scope.newScopes[i].name) {
+ scopes.push($scope.newScopes[i].name);
+ } else {
+ scopes.push($scope.newScopes[i]);
}
}
- resource.scopes = $scope.newResource.scopes;
+ resource.scopes = scopes;
$scope.authzRequest.resources.push(resource);
delete $scope.newResource;
+ delete $scope.newScopes;
}
$scope.removeResource = function(index) {
@@ -1517,20 +2051,11 @@
if ($scope.newResource._id) {
$scope.newResource.scopes = [];
$scope.scopes = [];
- ResourceServerResource.get({
+ ResourceServerResource.scopes({
realm: $route.current.params.realm,
- client : client.id,
+ client: client.id,
rsrid: $scope.newResource._id
}, function (data) {
- $scope.scopes = data.scopes;
- if (data.typedScopes) {
- for (i=0;i<data.typedScopes.length;i++) {
- $scope.scopes.push(data.typedScopes[i]);
- }
- }
- });
- } else {
- ResourceServerScope.query({realm : realm.realm, client : client.id}, function (data) {
$scope.scopes = data;
});
}
@@ -1554,7 +2079,17 @@
if (!$scope.newResource) {
$scope.newResource = {};
}
- $scope.authzRequest.resources[0].scopes = $scope.newResource.scopes;
+ if (!$scope.newScopes || ($scope.newResource._id != null && $scope.newScopes.length > 0 && $scope.newScopes[0].id)) {
+ $scope.newScopes = [];
+ }
+
+ var scopes = angular.copy($scope.newScopes);
+
+ for (i = 0; i < scopes.length; i++) {
+ delete scopes[i].text;
+ }
+
+ $scope.authzRequest.resources[0].scopes = scopes;
}
$http.post(authUrl + '/admin/realms/'+ $route.current.params.realm + '/clients/' + client.id + '/authz/resource-server/policy/evaluate'
@@ -1604,9 +2139,64 @@
}
};
- ResourceServerResource.query({realm : realm.realm, client : client.id}, function (data) {
- $scope.resources = data;
- });
+ $scope.resourcesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ id: function(resource){ return resource._id; },
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerResource.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
+ }
+ };
+
+ $scope.scopesUiSelect = {
+ minimumInputLength: 1,
+ delay: 500,
+ allowClear: true,
+ query: function (query) {
+ var data = {results: []};
+ if ('' == query.term.trim()) {
+ query.callback(data);
+ return;
+ }
+ $scope.query = {
+ realm: realm.realm,
+ client : client.id,
+ name: query.term.trim(),
+ deep: false,
+ max : 20,
+ first : 0
+ };
+ ResourceServerScope.query($scope.query, function(response) {
+ data.results = response;
+ query.callback(data);
+ });
+ },
+ formatResult: function(object, container, query) {
+ object.text = object.name;
+ return object.name;
+ }
+ };
ResourceServer.get({
realm : $route.current.params.realm,
@@ -1624,5 +2214,4 @@
$scope.authzRequest.userId = user.id;
}
-
});
\ No newline at end of file
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-services.js /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-services.js
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-services.js 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/authz/authz-services.js 2017-01-03 09:29:30.000000000 -0500
@@ -16,7 +16,9 @@
rsrid : '@rsrid'
}, {
'update' : {method : 'PUT'},
- 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/resource/search', method : 'GET'}
+ 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/resource/search', method : 'GET'},
+ 'scopes' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/resource/:rsrid/scopes', method : 'GET', isArray: true},
+ 'permissions' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/resource/:rsrid/permissions', method : 'GET', isArray: true}
});
});
@@ -27,7 +29,9 @@
id : '@id'
}, {
'update' : {method : 'PUT'},
- 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/scope/search', method : 'GET'}
+ 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/scope/search', method : 'GET'},
+ 'resources' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/scope/:id/resources', method : 'GET', isArray: true},
+ 'permissions' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/scope/:id/permissions', method : 'GET', isArray: true},
});
});
@@ -38,7 +42,11 @@
id : '@id'
}, {
'update' : {method : 'PUT'},
- 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/search', method : 'GET'}
+ 'search' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/search', method : 'GET'},
+ 'associatedPolicies' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/:id/associatedPolicies', method : 'GET', isArray: true},
+ 'dependentPolicies' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/:id/dependentPolicies', method : 'GET', isArray: true},
+ 'scopes' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/:id/scopes', method : 'GET', isArray: true},
+ 'resources' : {url: authUrl + '/admin/realms/:realm/clients/:client/authz/resource-server/policy/:id/resources', method : 'GET', isArray: true}
});
});
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/clients.js 2017-01-03 09:29:30.000000000 -0500
@@ -837,6 +837,11 @@
"transient",
"persistent"
];
+ $scope.xmlKeyNameTranformers = [
+ "NONE",
+ "KEY_ID",
+ "CERT_SUBJECT"
+ ];
$scope.canonicalization = [
{name: "EXCLUSIVE", value: "http://www.w3.org/2001/10/xml-exc-c14n#" },
@@ -866,7 +871,10 @@
$scope.samlEncrypt = false;
$scope.samlForcePostBinding = false;
$scope.samlForceNameIdFormat = false;
+ $scope.samlXmlKeyNameTranformer = $scope.xmlKeyNameTranformers[1];
$scope.disableAuthorizationTab = !client.authorizationServicesEnabled;
+ $scope.disableServiceAccountRolesTab = !client.serviceAccountsEnabled;
+ $scope.disableCredentialsTab = client.publicClient;
function updateProperties() {
if (!$scope.client.attributes) {
@@ -916,6 +924,13 @@
$scope.samlServerSignatureEnableKeyInfoExtension = false;
}
}
+ if ($scope.client.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] === 'NONE') {
+ $scope.samlXmlKeyNameTranformer = $scope.xmlKeyNameTranformers[0];
+ } else if ($scope.client.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] === 'KEY_ID') {
+ $scope.samlXmlKeyNameTranformer = $scope.xmlKeyNameTranformers[1];
+ } else if ($scope.client.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] === 'CERT_SUBJECT') {
+ $scope.samlXmlKeyNameTranformer = $scope.xmlKeyNameTranformers[2];
+ }
if ($scope.client.attributes["saml.assertion.signature"]) {
if ($scope.client.attributes["saml.assertion.signature"] == "true") {
$scope.samlAssertionSignature = true;
@@ -1035,6 +1050,10 @@
$scope.client.attributes['saml_name_id_format'] = $scope.nameIdFormat;
};
+ $scope.changeSamlSigKeyNameTranformer = function() {
+ $scope.client.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] = $scope.samlXmlKeyNameTranformer;
+ };
+
$scope.changeUserInfoSignedResponseAlg = function() {
if ($scope.userInfoSignedResponseAlg === 'unsigned') {
$scope.client.attributes['user.info.response.signature.alg'] = null;
@@ -1077,6 +1096,8 @@
}
$scope.client.publicClient = false;
$scope.client.serviceAccountsEnabled = true;
+ } else if ($scope.client.bearerOnly) {
+ $scope.client.serviceAccountsEnabled = false;
}
}
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/realm.js 2017-01-03 09:29:30.000000000 -0500
@@ -426,7 +426,7 @@
$scope.$watch('realm.internationalizationEnabled', updateSupported);
});
-module.controller('RealmCacheCtrl', function($scope, realm, RealmClearUserCache, RealmClearRealmCache, Notifications) {
+module.controller('RealmCacheCtrl', function($scope, realm, RealmClearUserCache, RealmClearRealmCache, RealmClearKeysCache, Notifications) {
$scope.realm = angular.copy(realm);
$scope.clearUserCache = function() {
@@ -441,6 +441,13 @@
});
}
+ $scope.clearKeysCache = function() {
+ RealmClearKeysCache.save({ realm: realm.realm}, function () {
+ Notifications.success("Public keys cache cleared");
+ });
+ }
+
+
});
module.controller('RealmPasswordPolicyCtrl', function($scope, Realm, realm, $http, $location, $route, Dialog, Notifications, serverInfo) {
@@ -757,11 +764,17 @@
"RSA_SHA512",
"DSA_SHA1"
];
+ $scope.xmlKeyNameTranformers = [
+ "NONE",
+ "KEY_ID",
+ "CERT_SUBJECT"
+ ];
if (instance && instance.alias) {
} else {
$scope.identityProvider.config.nameIDPolicyFormat = $scope.nameIdFormats[0].format;
$scope.identityProvider.config.signatureAlgorithm = $scope.signatureAlgorithms[1];
+ $scope.identityProvider.config.samlXmlKeyNameTranformer = $scope.xmlKeyNameTranformers[1];
}
}
@@ -1113,6 +1126,14 @@
type: 'org.keycloak.keys.KeyProvider'
}, function(data) {
$scope.instances = data;
+
+ for (var i = 0; i < $scope.instances.length; i++) {
+ for (var j = 0; j < $scope.providers.length; j++) {
+ if ($scope.providers[j].id === $scope.instances[i].providerId) {
+ $scope.instances[i].provider = $scope.providers[j];
+ }
+ }
+ }
});
$scope.addProvider = function(provider) {
@@ -2631,13 +2652,21 @@
$scope.itemCount = function(section) {
if (!$scope.importing) return 0;
if ($scope.hasRealmRoles() && (section === 'roles.realm')) return $scope.fileContent.roles.realm.length;
- if ($scope.hasClientRoles() && (section === 'roles.client')) return Object.keys($scope.fileContent.roles.client).length;
+ if ($scope.hasClientRoles() && (section === 'roles.client')) return clientRolesCount($scope.fileContent.roles.client);
if (!$scope.fileContent.hasOwnProperty(section)) return 0;
return $scope.fileContent[section].length;
}
+ clientRolesCount = function(clientRoles) {
+ var total = 0;
+ for (var clientName in clientRoles) {
+ total += clientRoles[clientName].length;
+ }
+ return total;
+ }
+
$scope.hasResources = function() {
return ($scope.importUsers && $scope.hasArray('users')) ||
($scope.importGroups && $scope.hasArray('groups')) ||
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/controllers/users.js 2017-01-03 09:29:30.000000000 -0500
@@ -336,7 +336,7 @@
module.controller('UserDetailCtrl', function($scope, realm, user, BruteForceUser, User,
Components,
- UserFederationInstances, UserImpersonation, RequiredActions,
+ UserImpersonation, RequiredActions,
$location, $http, Dialog, Notifications) {
$scope.realm = realm;
$scope.create = !user.id;
@@ -364,26 +364,10 @@
if(user.federationLink) {
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;
+ 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;
});
-
- /*
- 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");
}
@@ -633,74 +617,35 @@
};
});
-module.controller('UserFederationCtrl', function($scope, $location, $route, realm, serverInfo, Components, UserFederationProviders, UserFederationInstances, Notifications, Dialog) {
+module.controller('UserFederationCtrl', function($scope, $location, $route, realm, serverInfo, Components, Notifications, Dialog) {
console.log('UserFederationCtrl ++++****');
$scope.realm = realm;
$scope.providers = serverInfo.componentTypes['org.keycloak.storage.UserStorageProvider'];
+ $scope.instancesLoaded = false;
if (!$scope.providers) $scope.providers = [];
- 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) {
- $location.url("/create/user-federation/" + realm.realm + "/providers/" + provider.id);
- } else {
- $location.url("/create/user-storage/" + realm.realm + "/providers/" + provider.id);
-
- }
+ $location.url("/create/user-storage/" + realm.realm + "/providers/" + provider.id);
};
$scope.getInstanceLink = function(instance) {
- if (instance.isUserFederationProvider) {
- return "/realms/" + realm.realm + "/user-federation/providers/" + instance.providerName + "/" + instance.id;
- } else {
- return "/realms/" + realm.realm + "/user-storage/providers/" + instance.providerId + "/" + instance.id;
- }
+ return "/realms/" + realm.realm + "/user-storage/providers/" + instance.providerId + "/" + instance.id;
}
$scope.getInstanceName = function(instance) {
- if (instance.isUserFederationProvider) {
- return instance.displayName;
- } else {
- return instance.name;
- }
+ return instance.name;
}
$scope.getInstanceProvider = function(instance) {
- if (instance.isUserFederationProvider) {
- return instance.providerName;
- } else {
- return instance.providerId;
- }
+ return instance.providerId;
}
$scope.getInstancePriority = function(instance) {
- if (instance.isUserFederationProvider) {
- return instance.priority;
- } else {
- if (!instance.config['priority']) {
- console.log('getInstancePriority is undefined');
- }
- return instance.config['priority'][0];
+ if (!instance.config['priority']) {
+ console.log('getInstancePriority is undefined');
}
+ return instance.config['priority'][0];
}
Components.query({realm: realm.realm,
@@ -708,41 +653,19 @@
type: 'org.keycloak.storage.UserStorageProvider'
}, function(data) {
$scope.instances = data;
- for (var i = 0; i < data.length; i++) {
- data[i].isUserFederationProvider = false;
- }
- UserFederationInstances.query({realm: realm.realm}, function(data) {
- for (var i = 0; i < data.length; i++) {
- data[i].isUserFederationProvider = true;
- $scope.instances.push(data[i]);
- }
-
- });
+ $scope.instancesLoaded = true;
});
$scope.removeInstance = function(instance) {
- if (instance.isUserFederationProvider) {
- Dialog.confirmDelete(instance.displayName, 'user federation provider', function() {
- UserFederationInstances.remove({
- realm : realm.realm,
- instance : instance.id
- }, function() {
- $route.reload();
- Notifications.success("The provider has been deleted.");
- });
- });
-
- } else {
- Dialog.confirmDelete(instance.name, 'user storage provider', function() {
- Components.remove({
- realm : realm.realm,
- componentId : instance.id
- }, function() {
- $route.reload();
- Notifications.success("The provider has been deleted.");
- });
+ Dialog.confirmDelete(instance.name, 'user storage provider', function() {
+ Components.remove({
+ realm : realm.realm,
+ componentId : instance.id
+ }, function() {
+ $route.reload();
+ Notifications.success("The provider has been deleted.");
});
- }
+ });
};
});
@@ -765,13 +688,14 @@
}
}
- $scope.provider = instance;
$scope.showSync = false;
+ $scope.changed = false;
console.log("providerFactory: " + providerFactory.id);
function initUserStorageSettings() {
if ($scope.create) {
+ $scope.changed = true;
instance.name = providerFactory.id;
instance.providerId = providerFactory.id;
instance.providerType = 'org.keycloak.storage.UserStorageProvider';
@@ -807,6 +731,7 @@
}
} else {
+ $scope.changed = false;
$scope.fullSyncEnabled = (instance.config['fullSyncPeriod'] && instance.config['fullSyncPeriod'][0] > 0);
$scope.changedSyncEnabled = (instance.config['changedSyncPeriod'] && instance.config['changedSyncPeriod'][0]> 0);
if (providerFactory.metadata.synchronizable) {
@@ -854,7 +779,6 @@
}
}
- $scope.changed = false;
}
initUserStorageSettings();
@@ -888,8 +812,10 @@
$scope.save = function() {
+ console.log('save provider');
$scope.changed = false;
if ($scope.create) {
+ console.log('saving new provider');
Components.save({realm: realm.realm}, $scope.instance, function (data, headers) {
var l = headers().location;
var id = l.substring(l.lastIndexOf("/") + 1);
@@ -902,6 +828,7 @@
}
});
} else {
+ console.log('update existing provider');
Components.update({realm: realm.realm,
componentId: instance.id
},
@@ -917,13 +844,15 @@
};
$scope.reset = function() {
- initUserStorageSettings();
- $scope.instance = angular.copy(instance);
+ //initUserStorageSettings();
+ //$scope.instance = angular.copy(instance);
+ $route.reload();
};
$scope.cancel = function() {
+ console.log('cancel');
if ($scope.create) {
- $location.url("/realms/" + realm.realm + "/user-storage");
+ $location.url("/realms/" + realm.realm + "/user-federation");
} else {
$route.reload();
}
@@ -952,543 +881,6 @@
});
-module.controller('UserFederationTabCtrl', function(Dialog, $scope, Current, Notifications, $location) {
- $scope.removeUserFederation = function() {
- Dialog.confirmDelete($scope.instance.displayName, 'user federation provider', function() {
- $scope.instance.$remove({
- realm : Current.realm.realm,
- instance : $scope.instance.id
- }, function() {
- $location.url("/realms/" + Current.realm.realm + "/user-federation");
- Notifications.success("The provider has been deleted.");
- });
- });
- };
-});
-
-
-module.controller('GenericUserFederationCtrl', function($scope, $location, Notifications, $route, Dialog, realm, instance, providerFactory, UserFederationInstances, UserFederationSync) {
- console.log('GenericUserFederationCtrl');
-
- $scope.create = !instance.providerName;
- $scope.providerFactory = providerFactory;
- $scope.provider = instance;
-
- console.log("providerFactory: " + providerFactory.id);
-
- function initFederationSettings() {
- if ($scope.create) {
- instance.providerName = providerFactory.id;
- instance.config = {};
- instance.priority = 0;
- $scope.fullSyncEnabled = false;
- $scope.changedSyncEnabled = false;
-
- if (providerFactory.id === 'kerberos') {
- instance.config.debug = false;
- instance.config.allowPasswordAuthentication = true;
- instance.config.editMode = 'UNSYNCED';
- instance.config.updateProfileFirstLogin = true;
- instance.config.allowKerberosAuthentication = true;
- }
-
- if (providerFactory.properties) {
-
- for (var i = 0; i < providerFactory.properties.length; i++) {
- var configProperty = providerFactory.properties[i];
- instance.config[configProperty.name] = configProperty.defaultValue;
- }
- }
-
- } else {
- $scope.fullSyncEnabled = (instance.fullSyncPeriod && instance.fullSyncPeriod > 0);
- $scope.changedSyncEnabled = (instance.changedSyncPeriod && instance.changedSyncPeriod > 0);
-
- if (providerFactory.id === 'kerberos') {
- instance.config.debug = (instance.config.debug === 'true' || instance.config.debug === true);
- instance.config.allowPasswordAuthentication = (instance.config.allowPasswordAuthentication === 'true' || instance.config.allowPasswordAuthentication === true);
- instance.config.updateProfileFirstLogin = (instance.config.updateProfileFirstLogin === 'true' || instance.config.updateProfileFirstLogin === true);
- }
- }
-
- $scope.changed = false;
- }
-
- initFederationSettings();
- $scope.instance = angular.copy(instance);
- $scope.realm = realm;
-
- $scope.$watch('fullSyncEnabled', function(newVal, oldVal) {
- if (oldVal == newVal) {
- return;
- }
-
- $scope.instance.fullSyncPeriod = $scope.fullSyncEnabled ? 604800 : -1;
- $scope.changed = true;
- });
-
- $scope.$watch('changedSyncEnabled', function(newVal, oldVal) {
- if (oldVal == newVal) {
- return;
- }
-
- $scope.instance.changedSyncPeriod = $scope.changedSyncEnabled ? 86400 : -1;
- $scope.changed = true;
- });
-
- $scope.$watch('instance', function() {
- if (!angular.equals($scope.instance, instance)) {
- $scope.changed = true;
- }
-
- }, true);
-
- $scope.save = function() {
- $scope.changed = false;
- if ($scope.create) {
- UserFederationInstances.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-federation/providers/" + $scope.instance.providerName + "/" + id);
- Notifications.success("The provider has been created.");
- }, function (errorResponse) {
- if (errorResponse.data && errorResponse.data['error_description']) {
- Notifications.error(errorResponse.data['error_description']);
- }
- });
- } else {
- UserFederationInstances.update({realm: realm.realm,
- instance: 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() {
- initFederationSettings();
- $scope.instance = angular.copy(instance);
- };
-
- $scope.cancel = function() {
- if ($scope.create) {
- $location.url("/realms/" + realm.realm + "/user-federation");
- } else {
- $route.reload();
- }
- };
-
- $scope.triggerFullSync = function() {
- console.log('GenericCtrl: triggerFullSync');
- triggerSync('triggerFullSync');
- }
-
- $scope.triggerChangedUsersSync = function() {
- console.log('GenericCtrl: triggerChangedUsersSync');
- triggerSync('triggerChangedUsersSync');
- }
-
- function triggerSync(action) {
- UserFederationSync.save({ action: action, realm: $scope.realm.realm, provider: $scope.instance.id }, {}, function(syncResult) {
- Notifications.success("Sync of users finished successfully. " + syncResult.status);
- }, function() {
- Notifications.error("Error during sync of users");
- });
- }
-});
-
-
-module.controller('LDAPCtrl', function($scope, $location, $route, Notifications, Dialog, realm, instance, UserFederationInstances, UserFederationSync, RealmLDAPConnectionTester) {
- console.log('LDAPCtrl');
-
- $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";
-
- $scope.create = !instance.providerName;
-
- function initFederationSettings() {
- if ($scope.create) {
- instance.providerName = "ldap";
- instance.config = {};
- instance.priority = 0;
-
- instance.config.syncRegistrations = false;
- instance.config.userAccountControlsAfterPasswordUpdate = true;
- instance.config.connectionPooling = true;
- instance.config.pagination = true;
-
- instance.config.allowKerberosAuthentication = false;
- instance.config.debug = false;
- instance.config.useKerberosForPasswordAuthentication = false;
-
- instance.config.authType = 'simple';
- instance.config.batchSizeForSync = DEFAULT_BATCH_SIZE;
- instance.config.searchScope = "1";
- instance.config.useTruststoreSpi = "ldapsOnly";
-
- $scope.fullSyncEnabled = false;
- $scope.changedSyncEnabled = false;
- } else {
- instance.config.syncRegistrations = (instance.config.syncRegistrations === 'true' || instance.config.syncRegistrations === true);
- instance.config.userAccountControlsAfterPasswordUpdate = (instance.config.userAccountControlsAfterPasswordUpdate === 'true' || instance.config.userAccountControlsAfterPasswordUpdate === true);
- instance.config.connectionPooling = (instance.config.connectionPooling === 'true' || instance.config.connectionPooling === true);
- instance.config.pagination = (instance.config.pagination === 'true' || instance.config.pagination === true);
-
- instance.config.allowKerberosAuthentication = (instance.config.allowKerberosAuthentication === 'true' || instance.config.allowKerberosAuthentication === true);
- instance.config.debug = (instance.config.debug === 'true' || instance.config.debug === true);
- instance.config.useKerberosForPasswordAuthentication = (instance.config.useKerberosForPasswordAuthentication === 'true' || instance.config.useKerberosForPasswordAuthentication === true);
-
- if (!instance.config.authType) {
- instance.config.authType = 'simple';
- }
- if (!instance.config.batchSizeForSync) {
- instance.config.batchSizeForSync = DEFAULT_BATCH_SIZE;
- }
- if (!instance.config.searchScope) {
- instance.config.searchScope = '1';
- }
- if (!instance.config.useTruststoreSpi) {
- instance.config.useTruststoreSpi = "ldapsOnly";
- }
-
- $scope.fullSyncEnabled = (instance.fullSyncPeriod && instance.fullSyncPeriod > 0);
- $scope.changedSyncEnabled = (instance.changedSyncPeriod && instance.changedSyncPeriod > 0);
-
- for (var i=0 ; i<$scope.ldapVendors.length ; i++) {
- if ($scope.ldapVendors[i].id === instance.config.vendor) {
- $scope.vendorName = $scope.ldapVendors[i].name;
- }
- };
- }
-
- $scope.changed = false;
- $scope.lastVendor = instance.config.vendor;
- }
-
- initFederationSettings();
- $scope.instance = angular.copy(instance);
-
- $scope.realm = realm;
-
- $scope.$watch('fullSyncEnabled', function(newVal, oldVal) {
- if (oldVal == newVal) {
- return;
- }
-
- $scope.instance.fullSyncPeriod = $scope.fullSyncEnabled ? 604800 : -1;
- $scope.changed = true;
- });
-
- $scope.$watch('changedSyncEnabled', function(newVal, oldVal) {
- if (oldVal == newVal) {
- return;
- }
-
- $scope.instance.changedSyncPeriod = $scope.changedSyncEnabled ? 86400 : -1;
- $scope.changed = true;
- });
-
- $scope.$watch('instance', function() {
- if (!angular.equals($scope.instance, instance)) {
- $scope.changed = true;
- }
-
- if (!angular.equals($scope.instance.config.vendor, $scope.lastVendor)) {
- console.log("LDAP vendor changed");
- $scope.lastVendor = $scope.instance.config.vendor;
-
- if ($scope.lastVendor === "ad") {
- $scope.instance.config.usernameLDAPAttribute = "cn";
- $scope.instance.config.userObjectClasses = "person, organizationalPerson, user";
- } else {
- $scope.instance.config.usernameLDAPAttribute = "uid";
- $scope.instance.config.userObjectClasses = "inetOrgPerson, organizationalPerson";
- }
-
- $scope.instance.config.rdnLDAPAttribute = $scope.instance.config.usernameLDAPAttribute;
-
- var vendorToUUID = {
- rhds: "nsuniqueid",
- tivoli: "uniqueidentifier",
- edirectory: "guid",
- ad: "objectGUID",
- other: "entryUUID"
- };
- $scope.instance.config.uuidLDAPAttribute = vendorToUUID[$scope.lastVendor];
- }
- }, true);
-
- $scope.save = function() {
- $scope.changed = false;
-
- if (!parseInt($scope.instance.config.batchSizeForSync)) {
- $scope.instance.config.batchSizeForSync = DEFAULT_BATCH_SIZE;
- } else {
- $scope.instance.config.batchSizeForSync = parseInt($scope.instance.config.batchSizeForSync).toString();
- }
-
- if ($scope.create) {
- UserFederationInstances.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-federation/providers/" + $scope.instance.providerName + "/" + id);
- Notifications.success("The provider has been created.");
- }, function (errorResponse) {
- if (errorResponse.data && errorResponse.data['error_description']) {
- Notifications.error(errorResponse.data['error_description']);
- }
- });
- } else {
- UserFederationInstances.update({realm: realm.realm,
- instance: 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() {
- $route.reload();
- };
-
- $scope.cancel = function() {
- $location.url("/realms/" + realm.realm + "/user-federation");
- };
-
- $scope.remove = function() {
- Dialog.confirm('Delete', 'Are you sure you want to permanently delete this provider? All imported users will also be deleted.', function() {
- $scope.instance.$remove({
- realm : realm.realm,
- instance : $scope.instance.id
- }, function() {
- $location.url("/realms/" + realm.realm + "/user-federation");
- Notifications.success("The provider has been deleted.");
- });
- });
- };
-
-
- 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");
- });
- }
-
- $scope.triggerFullSync = function() {
- console.log('LDAPCtrl: triggerFullSync');
- triggerSync('triggerFullSync');
- }
-
- $scope.triggerChangedUsersSync = function() {
- console.log('LDAPCtrl: triggerChangedUsersSync');
- triggerSync('triggerChangedUsersSync');
- }
-
- function triggerSync(action) {
- UserFederationSync.save({ action: action, realm: $scope.realm.realm, provider: $scope.instance.id }, {}, function(syncResult) {
- Notifications.success("Sync of users finished successfully. " + syncResult.status);
- }, function() {
- Notifications.error("Error during sync of users");
- });
- }
-
-});
-
-
-module.controller('UserFederationMapperListCtrl', function($scope, $location, Notifications, $route, Dialog, realm, provider, mapperTypes, mappers) {
- console.log('UserFederationMapperListCtrl');
-
- $scope.realm = realm;
- $scope.provider = provider;
- $scope.instance = provider;
-
- $scope.mapperTypes = mapperTypes;
- $scope.mappers = mappers;
-
- $scope.hasAnyMapperTypes = false;
- for (var property in mapperTypes) {
- if (!(property.indexOf('$') === 0)) {
- $scope.hasAnyMapperTypes = true;
- break;
- }
- }
-
-});
-
-module.controller('UserFederationMapperCtrl', function($scope, realm, provider, mapperTypes, mapper, clients, UserFederationMapper, UserFederationMapperSync, Notifications, Dialog, $location) {
- console.log('UserFederationMapperCtrl');
- $scope.realm = realm;
- $scope.provider = provider;
- $scope.clients = clients;
- $scope.create = false;
- $scope.mapper = angular.copy(mapper);
- $scope.changed = false;
- $scope.mapperType = mapperTypes[mapper.federationMapperType];
-
- $scope.$watch('mapper', function() {
- if (!angular.equals($scope.mapper, mapper)) {
- $scope.changed = true;
- }
- }, true);
-
- $scope.save = function() {
- UserFederationMapper.update({
- realm : realm.realm,
- provider: provider.id,
- mapperId : mapper.id
- }, $scope.mapper, function() {
- $scope.changed = false;
- mapper = angular.copy($scope.mapper);
- $location.url("/realms/" + realm.realm + '/user-federation/providers/' + provider.providerName + '/' + provider.id + '/mappers/' + mapper.id);
- Notifications.success("Your changes have been saved.");
- }, function(error) {
- if (error.status == 400 && error.data.error_description) {
- Notifications.error(error.data.error_description);
- } else {
- Notifications.error('Unexpected error when creating mapper');
- }
- });
- };
-
- $scope.reset = function() {
- $scope.mapper = angular.copy(mapper);
- $scope.changed = false;
- };
-
- $scope.remove = function() {
- Dialog.confirmDelete($scope.mapper.name, 'mapper', function() {
- UserFederationMapper.remove({ realm: realm.realm, provider: provider.id, mapperId : $scope.mapper.id }, function() {
- Notifications.success("The mapper has been deleted.");
- $location.url("/realms/" + realm.realm + '/user-federation/providers/' + provider.providerName + '/' + provider.id + '/mappers');
- });
- });
- };
-
- $scope.triggerFedToKeycloakSync = function() {
- triggerMapperSync("fedToKeycloak")
- }
-
- $scope.triggerKeycloakToFedSync = function() {
- triggerMapperSync("keycloakToFed");
- }
-
- function triggerMapperSync(direction) {
- UserFederationMapperSync.save({ direction: direction, realm: realm.realm, provider: provider.id, mapperId : $scope.mapper.id }, {}, function(syncResult) {
- Notifications.success("Data synced successfully. " + syncResult.status);
- }, function(error) {
- Notifications.error(error.data.errorMessage);
- });
- }
-
-});
-
-module.controller('UserFederationMapperCreateCtrl', function($scope, realm, provider, mapperTypes, clients, UserFederationMapper, Notifications, Dialog, $location) {
- console.log('UserFederationMapperCreateCtrl');
- $scope.realm = realm;
- $scope.provider = provider;
- $scope.clients = clients;
- $scope.create = true;
- $scope.mapper = { federationProviderDisplayName: provider.displayName, config: {}};
- $scope.mapperTypes = mapperTypes;
- $scope.mapperType = null;
- $scope.changed = true;
-
- $scope.$watch('mapperType', function() {
- if ($scope.mapperType != null) {
- $scope.mapper.config = $scope.mapperType.defaultConfig;
- }
- }, true);
-
- $scope.save = function() {
- if ($scope.mapperType == null) {
- Notifications.error("You need to select mapper type!");
- return;
- }
-
- $scope.mapper.federationMapperType = $scope.mapperType.id;
- UserFederationMapper.save({
- realm : realm.realm, provider: provider.id
- }, $scope.mapper, function(data, headers) {
- var l = headers().location;
- var id = l.substring(l.lastIndexOf("/") + 1);
- $location.url('/realms/' + realm.realm +'/user-federation/providers/' + provider.providerName + '/' + provider.id + '/mappers/' + id);
- Notifications.success("Mapper has been created.");
- }, function(error) {
- if (error.status == 400 && error.data.error_description) {
- Notifications.error(error.data.error_description);
- } else {
- Notifications.error('Unexpected error when creating mapper');
- }
- });
- };
-
- $scope.reset = function() {
- $location.url("/realms/" + realm.realm + '/user-federation/providers/' + provider.providerName + '/' + provider.id + '/mappers');
- };
-
-
-});
-
function removeGroupMember(groups, member) {
for (var j = 0; j < groups.length; j++) {
//console.log('checking: ' + groups[j].path);
@@ -1631,8 +1023,10 @@
console.log("providerFactory: " + providerFactory.id);
+ $scope.changed = false;
function initUserStorageSettings() {
if ($scope.create) {
+ $scope.changed = true;
instance.name = 'ldap';
instance.providerId = 'ldap';
instance.providerType = 'org.keycloak.storage.UserStorageProvider';
@@ -1668,6 +1062,7 @@
} else {
+ $scope.changed = false;
$scope.fullSyncEnabled = (instance.config['fullSyncPeriod'] && instance.config['fullSyncPeriod'][0] > 0);
$scope.changedSyncEnabled = (instance.config['changedSyncPeriod'] && instance.config['changedSyncPeriod'][0]> 0);
if (!instance.config['fullSyncPeriod']) {
@@ -1734,7 +1129,6 @@
$scope.showSync = true;
}
- $scope.changed = false;
$scope.lastVendor = instance.config['vendor'][0];
}
@@ -1829,8 +1223,7 @@
};
$scope.reset = function() {
- initUserStorageSettings();
- $scope.instance = angular.copy(instance);
+ $route.reload();
};
$scope.cancel = function() {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js /tmp/keycloak/jboss_keycloak-postgres-2.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/loaders.js 2017-01-03 09:29:30.000000000 -0500
@@ -184,53 +184,6 @@
return componentsLoader;
});
-module.factory('UserFederationInstanceLoader', function(Loader, UserFederationInstances, $route, $q) {
- return Loader.get(UserFederationInstances, function() {
- return {
- realm : $route.current.params.realm,
- instance: $route.current.params.instance
- }
- });
-});
-
-module.factory('UserFederationFactoryLoader', function(Loader, UserFederationProviders, $route, $q) {
- return Loader.get(UserFederationProviders, function() {
- return {
- realm : $route.current.params.realm,
- provider: $route.current.params.provider
- }
- });
-});
-
-module.factory('UserFederationMapperTypesLoader', function(Loader, UserFederationMapperTypes, $route, $q) {
- return Loader.get(UserFederationMapperTypes, function () {
- return {
- realm: $route.current.params.realm,
- provider: $route.current.params.instance
- }
- });
-});
-
-module.factory('UserFederationMappersLoader', function(Loader, UserFederationMappers, $route, $q) {
- return Loader.query(UserFederationMappers, function () {
- return {
- realm: $route.current.params.realm,
- provider: $route.current.params.instance
- }
- });
-});
-
-module.factory('UserFederationMapperLoader', function(Loader, UserFederationMapper, $route, $q) {
- return Loader.get(UserFederationMapper, function () {
- return {
- realm: $route.current.params.realm,
- provider: $route.current.params.instance,
- mapperId: $route.current.params.mapperId
- }
- });
-});
-
-
module.factory('UserSessionStatsLoader', function(Loader, UserSessionStats, $route, $q) {
return Loader.get(UserSessionStats, function() {
return {
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js /tmp/keycloak/jboss_keycloak-postgres-2.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/js/services.js 2017-01-03 09:29:30.000000000 -0500
@@ -197,6 +197,9 @@
var utils = {};
utils.addLastEmptyValueToMultivaluedLists = function(properties, config) {
+ if (!properties) {
+ return;
+ }
for (var i=0 ; i<properties.length ; i++) {
var prop = properties[i];
@@ -394,59 +397,6 @@
this.alias = null;
});
-module.factory('UserFederationInstances', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:instance', {
- realm : '@realm',
- instance : '@instance'
- }, {
- update : {
- method : 'PUT'
- }
- });
-});
-
-module.factory('UserFederationProviders', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/providers/:provider', {
- realm : '@realm',
- provider : "@provider"
- });
-});
-
-module.factory('UserFederationSync', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:provider/sync');
-});
-
-module.factory('UserFederationMapperTypes', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:provider/mapper-types', {
- realm : '@realm',
- provider : '@provider'
- });
-});
-
-module.factory('UserFederationMappers', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:provider/mappers', {
- realm : '@realm',
- provider : '@provider'
- });
-});
-
-module.factory('UserFederationMapper', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:provider/mappers/:mapperId', {
- realm : '@realm',
- provider : '@provider',
- mapperId: '@mapperId'
- }, {
- update: {
- method : 'PUT'
- }
- });
-});
-
-module.factory('UserFederationMapperSync', function($resource) {
- return $resource(authUrl + '/admin/realms/:realm/user-federation/instances/:provider/mappers/:mapperId/sync');
-});
-
-
module.factory('UserSessionStats', function($resource) {
return $resource(authUrl + '/admin/realms/:realm/users/:user/session-stats', {
realm : '@realm',
@@ -678,6 +628,12 @@
});
});
+module.factory('RealmClearKeysCache', function($resource) {
+ return $resource(authUrl + '/admin/realms/:realm/clear-keys-cache', {
+ realm : '@realm'
+ });
+});
+
module.factory('RealmSessionStats', function($resource) {
return $resource(authUrl + '/admin/realms/:realm/session-stats', {
realm : '@realm'
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-resource-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-resource-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-resource-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-resource-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -39,9 +39,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-resources' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2="{ minimumInputLength: 1}" id="reqActions" data-ng-model="policy.config.resources" data-placeholder="{{:: 'authz-select-resource' | translate}}..." multiple data-ng-required="!policy.config.default">
- <option ng-repeat="resource in resources" value="{{resource._id}}" ng-selected="true">{{resource.name}}</option>
- </select>
+ <input type="hidden" ui-select2="resourcesUiSelect" id="reqActions" data-ng-model="policy.config.resources" data-placeholder="{{:: 'authz-select-resource' | translate}}..." data-ng-required="!policy.config.default"/>
</div>
<kc-tooltip>{{:: 'authz-permission-resource-resource.tooltip' | translate}}</kc-tooltip>
</div>
@@ -58,9 +56,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-policy-apply-policy' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2 id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required>
- <option ng-repeat="policy in policies" value="{{policy.id}}" ng-selected="true">{{policy.name}}</option>
- </select>
+ <input type="hidden" ui-select2="policiesUiSelect" id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required />
</div>
<kc-tooltip>{{:: 'authz-policy-apply-policy.tooltip' | translate}}</kc-tooltip>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-scope-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-scope-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-scope-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/provider/resource-server-policy-scope-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -32,12 +32,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-resource' | translate}}</label>
<div class="col-md-6">
- <select class="form-control" id="reqActions"
- ng-model="policy.config.resources"
- ng-change="resolveScopes(policy)"
- data-ng-options="resource._id as resource.name for resource in resources">
- <option value="">{{:: 'authz-any-resource' | translate}}...</option>
- </select>
+ <input type="hidden" ui-select2="resourcesUiSelect" data-ng-change="selectResource()" id="reqActions" data-ng-model="policy.config.resources" data-placeholder="{{:: 'authz-any-resource' | translate}}..." />
</div>
<kc-tooltip>{{:: 'authz-permission-scope-resource.tooltip' | translate}}</kc-tooltip>
</div>
@@ -45,25 +40,19 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-scopes' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2 id="reqActions"
+ <select ui-select2 id="reqActions2"
data-ng-model="policy.config.scopes"
data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple
- data-ng-required="policy.config.resources != ''"
- data-ng-options="scope.id as scope.name for scope in scopes track by scope.id"/>
+ data-ng-required="policy.config.resources != null"
+ data-ng-options="scope.id as scope.name for scope in policy.config.resources.scopes track by scope.id"/>
</div>
-
<kc-tooltip>{{:: 'authz-permission-scope-scope.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix" data-ng-show="!policy.config.resources">
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-scopes' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2="{ minimumInputLength: 1}" id="reqActions"
- data-ng-model="policy.config.scopes"
- data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple
- data-ng-required="policy.config.resources == ''"
- data-ng-options="scope.id as scope.name for scope in scopes track by scope.id"/>
- </select>
+ <input type="hidden" ui-select2="scopesUiSelect" id="reqActions" data-ng-model="policy.config.scopes" data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple data-ng-required="policy.config.resources == null" />
</div>
<kc-tooltip>{{:: 'authz-permission-scope-scope.tooltip' | translate}}</kc-tooltip>
</div>
@@ -71,9 +60,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-policy-apply-policy' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2 id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required>
- <option ng-repeat="policy in policies" value="{{policy.id}}" ng-selected="true">{{policy.name}}</option>
- </select>
+ <input type="hidden" ui-select2="policiesUiSelect" id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required />
</div>
<kc-tooltip>{{:: 'authz-policy-apply-policy.tooltip' | translate}}</kc-tooltip>
@@ -95,7 +82,6 @@
</div>
<input type="hidden" data-ng-model="policy.type"/>
</fieldset>
-
<div class="form-group" data-ng-show="access.manageAuthorization">
<div class="col-md-10 col-md-offset-2">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/resource-server-permission-list.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/resource-server-permission-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/resource-server-permission-list.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/permission/resource-server-permission-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -28,6 +28,12 @@
</select>
</div>
</div>
+ <div class="input-group">
+ <select class="form-control search" data-ng-model="detailsFilter" data-ng-change="searchQuery();">
+ <option value="" selected>Hide Details</option>
+ <option value="true">Show Details</option>
+ </select>
+ </div>
<div class="pull-right">
<select class="form-control" ng-model="policyType"
ng-options="p.name for p in policyProviders track by p.type"
@@ -42,7 +48,7 @@
<th>{{:: 'name' | translate}}</th>
<th>{{:: 'description' | translate}}</th>
<th>{{:: 'type' | translate}}</th>
- <th>{{:: 'authz-associated-policies' | translate}}</th>
+ <th>{{:: 'actions' | translate}}</th>
</tr>
</thead>
<tfoot data-ng-show="policies && (policies.length >= query.max || query.first > 0)">
@@ -57,17 +63,40 @@
</tr>
</tfoot>
<tbody>
- <tr ng-repeat="policy in policies | filter: {name: search.name, type: search.type} | orderBy:'name'">
+ <tr ng-repeat-start="policy in policies | filter: {name: search.name, type: search.type} | orderBy:'name'">
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{policy.type}}/{{policy.id}}">{{policy.name}}</a></td>
<td>{{policy.description}}</td>
<td>{{policy.type}}</td>
- <td>
- <span data-ng-show="!policy.associatedPolicies.length">{{:: 'authz-no-policy-assigned' | translate}}</span>
- <span data-ng-show="policy.associatedPolicies.length > 0">
- <span ng-repeat="policy in policy.associatedPolicies">
- <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/policy/{{policy.type}}/{{policy.id}}">{{policy.name}}</a>{{$last ? '' : ', '}}
- </span>
- </span>
+ <td ng-if="!policy.details.loaded" class="kc-action-cell" data-ng-click="showDetails(policy);">
+ {{:: 'authz-show-details' | translate}}
+ </td>
+ <td ng-if="policy.details.loaded" class="kc-action-cell" data-ng-click="showDetails(policy);">
+ {{:: 'authz-hide-details' | translate}}
+ </td>
+ </tr>
+ <tr ng-if="policy.details && policy.details.loaded" ng-repeat-end="">
+ <td colspan="4">
+ <div id="details">
+ <table class="table kc-authz-table-expanded table-striped">
+ <thead>
+ <tr>
+ <th>Associated Permissions</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span data-ng-show="policy.associatedPolicies && !policy.associatedPolicies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
+ <ul ng-repeat="dep in policy.associatedPolicies" data-ng-show="policy.associatedPolicies.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/policy/{{dep.type}}/{{dep.id}}">{{dep.name}}</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</td>
</tr>
<tr data-ng-show="(policies | filter:search).length == 0">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/provider/resource-server-policy-aggregate-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -34,11 +34,8 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-policy-apply-policy' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2 id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required>
- <option ng-repeat="policy in policies" value="{{policy.id}}" ng-selected="true">{{policy.name}}</option>
- </select>
+ <input type="hidden" ui-select2="policiesUiSelect" id="reqActions" data-ng-model="policy.config.applyPolicies" data-placeholder="{{:: 'authz-select-a-policy' | translate}}..." multiple required />
</div>
-
<kc-tooltip>{{:: 'authz-policy-apply-policy.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix">
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/provider: resource-server-policy-client-detail.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-evaluate.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-evaluate.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-evaluate.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-evaluate.html 2017-01-03 09:29:30.000000000 -0500
@@ -172,14 +172,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-resources' | translate}} <span class="required">*</span></label>
<div class="col-md-6">
- <select ui-select2="{ minimumInputLength: 1, allowClear:true }"
- ng-model="newResource._id"
- data-placeholder="Select a resource..."
- data-ng-required="!applyResourceType && authzRequest.resources.length == 0 && !authzRequest.entitlements"
- data-ng-click="resolveScopes()"
- ng-options="resource._id as resource.name for resource in resources track by resource._id">
- <option value=""></option>
- </select>
+ <input type="hidden" ui-select2="resourcesUiSelect" id="reqActions3" data-ng-change="resolveScopes()" data-ng-model="newResource" data-placeholder="{{:: 'authz-select-resource' | translate}}..." data-ng-required="!applyResourceType && authzRequest.resources.length == 0 && !authzRequest.entitlements" />
</div>
<kc-tooltip>{{:: 'authz-permission-resource-resource.tooltip' | translate}}</kc-tooltip>
</div>
@@ -199,12 +192,7 @@
<label class="col-md-2 control-label" for="newResource.scopes">{{:: 'authz-scopes' | translate}}</label>
<div class="col-md-6">
- <select ui-select2="{ minimumInputLength: 1}"
- id="newResource.scopes"
- multiple
- data-ng-model="newResource.scopes"
- data-placeholder="{{:: 'authz-select-scope' | translate}}..."
- data-ng-options="scope.name as scope.name for scope in scopes track by scope.name"/>
+ <input type="hidden" ui-select2="scopesUiSelect" id="reqActions" data-ng-model="newScopes" data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple />
</div>
<kc-tooltip>{{:: 'authz-permission-scope-scope.tooltip' | translate}}</kc-tooltip>
@@ -215,7 +203,7 @@
<div class="col-md-6">
<select ui-select2
id="newResource.scopes"
- data-ng-model="newResource.scopes"
+ data-ng-model="newScopes"
data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple>
<option ng-repeat="scope in scopes" value="{{scope.name}}">{{scope.name}}</option>
</select>
@@ -246,11 +234,11 @@
<td>{{resource.name ? resource.name : 'authz-evaluation-any-resource-with-scopes' | translate}}</td>
<td>
<span data-ng-show="!resource.scopes.length">{{:: 'authz-any-scope' | translate}}.</span>
- <span data-ng-show="resource.scopes.length > 0">
- <span ng-repeat="scope in resource.scopes">
- {{scope}} {{$last ? '' : ', '}}
+ <span data-ng-show="resource.scopes.length > 0">
+ <span ng-repeat="scope in resource.scopes">
+ {{scope.name ? scope.name : scope}} {{$last ? '' : ', '}}
+ </span>
</span>
- </span>
</td>
<td class="kc-action-cell">
<button class="btn btn-default btn-block btn-sm"
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/policy/resource-server-policy-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -27,8 +27,16 @@
<option value="" selected ng-click="query.type = ''">{{:: 'authz-all-types' | translate}}</option>
</select>
</div>
+ <div class="input-group">
+ <select class="form-control search" data-ng-model="detailsFilter" data-ng-change="searchQuery();">
+ <option value="" selected>Hide Details</option>
+ <option value="true">Show Details</option>
+ </select>
+ </div>
</div>
<div class="pull-right">
+ <a id="hideDetails" data-ng-show="showDetailsFlag" class="btn btn-default" data-ng-click="showDetailsFlag = !showDetailsFlag;showDetails();" href="">{{:: 'authz-hide-details' | translate}}</a>
+ <a id="showDetails" data-ng-hide="showDetailsFlag" class="btn btn-default" data-ng-click="showDetailsFlag = !showDetailsFlag;showDetails();" href="">{{:: 'authz-show-details' | translate}}</a>
<select class="form-control" ng-model="policyType"
ng-options="p.name for p in policyProviders track by p.type"
data-ng-change="addPolicy(policyType);">
@@ -42,6 +50,7 @@
<th>{{:: 'name' | translate}}</th>
<th>{{:: 'description' | translate}}</th>
<th>{{:: 'type' | translate}}</th>
+ <th>{{:: 'actions' | translate}}</th>
</tr>
</thead>
<tfoot data-ng-show="policies && (policies.length >= query.max || query.first > 0)">
@@ -56,10 +65,41 @@
</tr>
</tfoot>
<tbody>
- <tr ng-repeat="policy in policies | filter: {name: search.name, type: search.type} | orderBy:'name'">
+ <tr ng-repeat-start="policy in policies | filter: {name: search.name, type: search.type} | orderBy:'name'">
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/policy/{{policy.type}}/{{policy.id}}">{{policy.name}}</a></td>
<td>{{policy.description}}</td>
<td>{{policy.type}}</td>
+ <td ng-if="!policy.details.loaded" class="kc-action-cell" data-ng-click="showDetails(policy);">
+ {{:: 'authz-show-details' | translate}}
+ </td>
+ <td ng-if="policy.details.loaded" class="kc-action-cell" data-ng-click="showDetails(policy);">
+ {{:: 'authz-hide-details' | translate}}
+ </td>
+ </tr>
+ <tr ng-if="policy.details && policy.details.loaded" ng-repeat-end="">
+ <td colspan="4">
+ <div id="details">
+ <table class="table kc-authz-table-expanded table-striped">
+ <thead>
+ <tr>
+ <th>Dependent Permissions</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span data-ng-show="policy.dependentPolicies && !policy.dependentPolicies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
+ <ul ng-repeat="dep in policy.dependentPolicies" data-ng-show="policy.dependentPolicies.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{dep.type}}/{{dep.id}}">{{dep.name}}</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </td>
</tr>
<tr data-ng-show="(policies | filter:search).length == 0">
<td class="text-muted" colspan="3" data-ng-show="search.name">{{:: 'no-results' | translate}}</td>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -47,9 +47,7 @@
<label class="col-md-2 control-label" for="reqActions">{{:: 'authz-scopes' | translate}}</label>
<div class="col-md-6">
- <select ui-select2 id="reqActions" ng-model="resource.scopes" data-placeholder="{{:: 'authz-select-scope' | translate}}..." multiple>
- <option ng-repeat="scope in scopes" value="{{scope.name}}" ng-selected="true">{{scope.name}}</option>
- </select>
+ <input type="hidden" ui-select2="scopesUiSelect" id="reqActions" data-ng-model="resource.scopes" data-placeholder="{{:: 'authz-select-scope' | translate}}..." multiple/>
</div>
<kc-tooltip>{{:: 'authz-resource-scopes.tooltip' | translate}}</kc-tooltip>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-list.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-list.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-resource-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -39,8 +39,13 @@
<i class="fa fa-search" type="submit" data-ng-click="firstPage()"></i>
</div>
</div>
+ <div class="input-group">
+ <select class="form-control search" data-ng-model="detailsFilter" data-ng-change="searchQuery();">
+ <option value="" selected>Hide Details</option>
+ <option value="true">Show Details</option>
+ </select>
+ </div>
</div>
-
<div class="pull-right">
<a id="createResource" class="btn btn-default" href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/resource/create">{{:: 'create' | translate}}</a>
</div>
@@ -52,9 +57,7 @@
<th>{{:: 'type' | translate}}</th>
<th>{{:: 'authz-uri' | translate}}</th>
<th>{{:: 'authz-owner' | translate}}</th>
- <th>{{:: 'authz-scopes' | translate}}</th>
- <th>{{:: 'authz-permissions' | translate}}</th>
- <th>{{:: 'actions' | translate}}</th>
+ <th colspan="2">{{:: 'actions' | translate}}</th>
</tr>
</thead>
<tfoot data-ng-show="resources && (resources.length >= query.max || query.first > 0)">
@@ -69,32 +72,59 @@
</tr>
</tfoot>
<tbody>
- <tr ng-repeat="resource in resources | filter:search | orderBy:'name'">
+ <tr ng-repeat-start="resource in resources | filter:search | orderBy:'name'">
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/resource/{{resource._id}}">{{resource.name}}</a></td>
<td>
<span data-ng-show="resource.type">{{resource.type}}</span>
<span data-ng-show="!resource.type">{{:: 'authz-no-type-defined' | translate}}</span>
</td>
- <td>{{resource.uri}}</td>
- <td>{{resource.owner.name}}</td>
<td>
- <span data-ng-show="!resource.scopes.length">{{:: 'authz-no-scopes-assigned' | translate}}</span>
- <span data-ng-show="resource.scopes.length > 0">
- <span ng-repeat="scope in resource.scopes">
- <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/scope/{{scope.id}}">{{scope.name}}</a>{{$last ? '' : ', '}}
- </span>
- </span>
+ <span data-ng-show="resource.uri">{{resource.uri}}</span>
+ <span data-ng-show="!resource.uri">{{:: 'authz-no-uri-defined' | translate}}</span>
</td>
- <td>
- <span data-ng-show="!resource.policies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
- <span data-ng-show="resource.policies.length > 0">
- <span ng-repeat="policy in resource.policies">
- <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{policy.type}}/{{policy.id}}">{{policy.name}}</a>{{$last ? '' : ', '}}
- </span>
- </span>
+ <td>{{resource.owner.name}}</td>
+ <td ng-if="!resource.details.loaded" class="kc-action-cell" data-ng-click="showDetails(resource);">
+ {{:: 'authz-show-details' | translate}}
</td>
- <td class="kc-action-cell" style="vertical-align: middle">
- <button class="btn btn-default btn-block btn-sm" ng-click="createPolicy(resource);">{{:: 'authz-create-permission' | translate}}</button>
+ <td ng-if="resource.details.loaded" class="kc-action-cell" data-ng-click="showDetails(resource);">
+ {{:: 'authz-hide-details' | translate}}
+ </td>
+ <td class="kc-action-cell" ng-click="createPolicy(resource);">
+ {{:: 'authz-create-permission' | translate}}
+ </td>
+ </tr>
+ <tr ng-if="resource.details && resource.details.loaded" ng-repeat-end="">
+ <td colspan="6">
+ <div id="details">
+ <table class="table kc-authz-table-expanded table-striped">
+ <thead>
+ <tr>
+ <th>Scopes</th>
+ <th>Associated Permissions</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span data-ng-show="resource.scopes && !resource.scopes.length">{{:: 'authz-no-scopes-assigned' | translate}}</span>
+ <ul ng-repeat="scope in resource.scopes" data-ng-show="resource.scopes.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/scope/{{scope.id}}">{{scope.name}}</a>
+ </li>
+ </ul>
+ </td>
+ <td>
+ <span data-ng-show="resource.policies && !resource.policies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
+ <ul ng-repeat="policy in resource.policies" data-ng-show="resource.policies.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{policy.type}}/{{policy.id}}">{{policy.name}}</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</td>
</tr>
<tr data-ng-show="(resources | filter:search).length == 0">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-scope-list.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-scope-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-scope-list.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/authz/resource-server-scope-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -14,6 +14,12 @@
<i class="fa fa-search" id="scopeSearch" type="submit" data-ng-click="firstPage()"></i>
</div>
</div>
+ <div class="input-group">
+ <select class="form-control search" data-ng-model="detailsFilter" data-ng-change="showDetails();">
+ <option value="" selected>Hide Details</option>
+ <option value="true">Show Details</option>
+ </select>
+ </div>
</div>
<div class="pull-right">
<a id="createScope" class="btn btn-default" href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/scope/create">{{:: 'create' | translate}}</a>
@@ -23,14 +29,12 @@
</tr>
<tr data-ng-hide="scopes.length == 0">
<th>{{:: 'name' | translate}}</th>
- <th>{{:: 'authz-resources' | translate}}</th>
- <th>{{:: 'authz-permissions' | translate}}</th>
- <th>{{:: 'actions' | translate}}</th>
+ <th colspan="2">{{:: 'actions' | translate}}</th>
</tr>
</thead>
<tfoot data-ng-show="scopes && (scopes.length >= query.max || query.first > 0)">
<tr>
- <td colspan="7">
+ <td colspan="8">
<div class="table-nav">
<button data-ng-click="firstPage()" class="first" ng-disabled="query.first == 0">{{:: 'first-page' | translate}}</button>
<button data-ng-click="previousPage()" class="prev" ng-disabled="query.first == 0">{{:: 'previous-page' | translate}}</button>
@@ -40,26 +44,50 @@
</tr>
</tfoot>
<tbody>
- <tr ng-repeat="scope in scopes | filter:search | orderBy:'name'">
+ <tr ng-repeat-start="scope in scopes | filter:search | orderBy:'name'">
<td><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/scope/{{scope.id}}">{{scope.name}}</a></td>
- <td>
- <span data-ng-show="!scope.resources.length">{{:: 'authz-no-resources-assigned' | translate}}</span>
- <span data-ng-show="scope.resources.length > 0">
- <span ng-repeat="resource in scope.resources">
- <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/resource/{{resource._id}}">{{resource.name}}</a>{{$last ? '' : ', '}}
- </span>
- </span>
+ <td ng-if="!scope.details.loaded" class="kc-action-cell" data-ng-click="showDetails(scope);">
+ {{:: 'authz-show-details' | translate}}
+ </td>
+ <td ng-if="scope.details.loaded" class="kc-action-cell" data-ng-click="showDetails(scope);">
+ {{:: 'authz-hide-details' | translate}}
</td>
- <td>
- <span data-ng-show="!scope.policies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
- <span data-ng-show="scope.policies.length > 0">
- <span ng-repeat="policy in scope.policies">
- <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{policy.type}}/{{policy.id}}">{{policy.name}}</a>{{$last ? '' : ', '}}
- </span>
- </span>
+ <td class="kc-action-cell" ng-click="createPolicy(scope);">
+ {{:: 'authz-create-permission' | translate}}
</td>
- <td class="kc-action-cell" style="vertical-align: middle">
- <button class="btn btn-default btn-block btn-sm" ng-click="createPolicy(scope);">{{:: 'authz-create-permission' | translate}}</button>
+ </tr>
+ <tr ng-if="scope.details && scope.details.loaded" ng-repeat-end="">
+ <td colspan="3">
+ <div id="details">
+ <table class="table kc-authz-table-expanded table-striped">
+ <thead>
+ <tr>
+ <th>Resources</th>
+ <th>Associated Permissions</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <span data-ng-show="scope.resources && !scope.resources.length">{{:: 'authz-no-resources-assigned' | translate}}</span>
+ <ul ng-repeat="resource in scope.resources" data-ng-show="scope.resources.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/resource/{{resource._id}}">{{resource.name}}</a>
+ </li>
+ </ul>
+ </td>
+ <td>
+ <span data-ng-show="scope.policies && !scope.policies.length">{{:: 'authz-no-permission-assigned' | translate}}</span>
+ <ul ng-repeat="policy in scope.policies" data-ng-show="scope.policies.length > 0">
+ <li>
+ <a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/permission/{{policy.type}}/{{policy.id}}">{{policy.name}}</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</td>
</tr>
<tr data-ng-show="(scopes | filter:search).length == 0">
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/client-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -110,7 +110,7 @@
<input ng-model="client.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
</div>
- <div class="form-group" data-ng-show="serverInfo.profileInfo.previewEnabled && protocol == 'openid-connect'">
+ <div class="form-group" data-ng-show="serverInfo.profileInfo.disabledFeatures.indexOf('AUTHORIZATION') == -1 && protocol == 'openid-connect'">
<label class="col-md-2 control-label" for="authorizationServicesEnabled">{{:: 'authz-authorization-services-enabled' | translate}}</label>
<kc-tooltip>{{:: 'authz-authorization-services-enabled.tooltip' | translate}}</kc-tooltip>
<div class="col-md-6">
@@ -158,6 +158,19 @@
</div>
<kc-tooltip>{{:: 'signature-algorithm.tooltip' | translate}}</kc-tooltip>
</div>
+ <div class="form-group clearfix block" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
+ <label class="col-md-2 control-label" for="samlSigKeyNameTranformer">{{:: 'saml-signature-keyName-transformer' | translate}}</label>
+ <div class="col-sm-6">
+ <div>
+ <select class="form-control" id="xmlKeyNameTranformer"
+ ng-change="changeSamlSigKeyNameTranformer()"
+ ng-model="samlXmlKeyNameTranformer"
+ ng-options="alg for alg in xmlKeyNameTranformers">
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'saml-signature-keyName-transformer.tooltip' | translate}}</kc-tooltip>
+ </div>
<div class="form-group" data-ng-show="(samlAssertionSignature || samlServerSignature) && protocol == 'saml'">
<label class="col-md-2 control-label" for="canonicalization">{{:: 'canonicalization-method' | translate}}</label>
<div class="col-sm-6">
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: federated-generic.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: federated-kerberos.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: federated-ldap.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: federated-mapper-detail.html
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials: federated-mappers.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mapper-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mapper-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mapper-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mapper-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -1,7 +1,8 @@
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
<ol class="breadcrumb">
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
- <li><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.displayName}}</a></li>
+ <li ng-show="identityProvider.diaplayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.displayName}}</a></li>
+ <li ng-show="!identityProvider.diaplayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
<li><a href="#/realms/{{realm.realm}}/identity-provider-mappers/{{identityProvider.alias}}/mappers">{{:: 'identity-provider-mappers' | translate}}</a></li>
<li class="active" data-ng-show="create">{{:: 'create-identity-provider-mapper' | translate}}</li>
<li class="active" data-ng-hide="create">{{mapper.name|capitalize}}</li>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mappers.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mappers.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mappers.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/identity-provider-mappers.html 2017-01-03 09:29:30.000000000 -0500
@@ -1,7 +1,9 @@
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
<ol class="breadcrumb">
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
- <li>{{identityProvider.displayName}}</li>
+ <li data-ng-show="identityProvider.displayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.displayName}}</a></li>
+ <li data-ng-show="!identityProvider.displayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
+ <li>{{:: 'mappers' | translate}}</li>
</ol>
<kc-tabs-identity-provider></kc-tabs-identity-provider>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-cache-settings.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-cache-settings.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-cache-settings.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-cache-settings.html 2017-01-03 09:29:30.000000000 -0500
@@ -17,6 +17,13 @@
</div>
<kc-tooltip>{{:: 'user-cache-clear.tooltip' | translate}}</kc-tooltip>
</div>
+ <div class="form-group">
+ <label class="col-md-2 control-label">{{:: 'keys-cache-clear' | translate}}</label>
+ <div class="col-md-6">
+ <button type="submit" data-ng-click="clearKeysCache()" class="btn btn-default">{{:: 'clear' | translate}}</button>
+ </div>
+ <kc-tooltip>{{:: 'keys-cache-clear.tooltip' | translate}}</kc-tooltip>
+ </div>
</form>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-export.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-export.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-export.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-export.html 2017-01-03 09:29:30.000000000 -0500
@@ -1,7 +1,9 @@
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2" data-ng-init="initProvider()">
<ol class="breadcrumb">
<li><a href="#/realms/{{realm.realm}}/identity-provider-settings">{{:: 'identity-providers' | translate}}</a></li>
- <li>{{identityProvider.displayName}}</li>
+ <li data-ng-show="identityProvider.displayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.displayName}}</a></li>
+ <li data-ng-show="!identityProvider.displayName"><a href="#/realms/{{realm.realm}}/identity-provider-settings/provider/{{identityProvider.providerId}}/{{identityProvider.alias}}">{{identityProvider.alias}}</a></li>
+ <li>{{:: 'export' | translate}}</li>
</ol>
<kc-tabs-identity-provider></kc-tabs-identity-provider>
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-oidc.html 2017-01-03 09:29:30.000000000 -0500
@@ -127,6 +127,13 @@
</div>
<kc-tooltip>{{:: 'backchannel-logout.tooltip' | translate}}</kc-tooltip>
</div>
+ <div class="form-group">
+ <label class="col-md-2 control-label" for="disableUserInfo">{{:: 'disableUserInfo' | translate}}</label>
+ <div class="col-md-6">
+ <input ng-model="identityProvider.config.disableUserInfo" id="disableUserInfo" onoffswitchvalue on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
+ </div>
+ <kc-tooltip>{{:: 'identity-provider.disableUserInfo.tooltip' | translate}}</kc-tooltip>
+ </div>
<div class="form-group clearfix">
<label class="col-md-2 control-label" for="userInfoUrl">{{:: 'user-info-url' | translate}}</label>
<div class="col-md-6">
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-identity-provider-saml.html 2017-01-03 09:29:30.000000000 -0500
@@ -161,6 +161,18 @@
</div>
<kc-tooltip>{{:: 'signature-algorithm.tooltip' | translate}}</kc-tooltip>
</div>
+ <div class="form-group clearfix block" data-ng-show="identityProvider.config.wantAuthnRequestsSigned == 'true'">
+ <label class="col-md-2 control-label" for="samlSigKeyNameTranformer">{{:: 'saml-signature-keyName-transformer' | translate}}</label>
+ <div class="col-md-6">
+ <div>
+ <select class="form-control" id="samlSigKeyNameTranformer"
+ ng-model="identityProvider.config.xmlSigKeyInfoKeyNameTransformer"
+ ng-options="xmlKeyNameTranformer for xmlKeyNameTranformer in xmlKeyNameTranformers">
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'saml-signature-keyName-transformer.tooltip' | translate}}</kc-tooltip>
+ </div>
<div class="form-group">
<label class="col-md-2 control-label" for="forceAuthn">{{:: 'force-authentication' | translate}}</label>
<div class="col-md-6">
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-list.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-list.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -27,28 +27,26 @@
<table class="table table-striped table-bordered">
<thead>
<tr>
- <th>{{:: 'status' | translate}}</th>
<th>{{:: 'type' | translate}}</th>
+ <th>{{:: 'status' | translate}}</th>
<th>{{:: 'kid' | translate}}</th>
<th>{{:: 'priority' | translate}}</th>
<th>{{:: 'provider' | translate}}</th>
- <th>{{:: 'publicKey' | translate}}</th>
- <th>{{:: 'certificate' | translate}}</th>
+ <th colspan="2">{{:: 'publicKeys' | translate}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="key in keys">
- <td>{{key.status}}</td>
<td>{{key.type}}</td>
+ <td>{{key.status}}</td>
<td>{{key.kid}}</td>
<td>{{key.providerPriority}}</td>
<td><a href="#/realms/{{realm.realm}}/keys/providers/{{key.provider.providerId}}/{{key.provider.id}}">{{key.provider.name}}</a></td>
- <td data-ng-show="key.publicKey" class="kc-action-cell" data-ng-click="viewKey(key.publicKey)">{{:: 'view' | translate}}</td>
- <td data-ng-hide="key.publicKey"></td>
+ <td data-ng-show="key.type === 'RSA'" class="kc-action-cell" data-ng-click="viewKey(key.publicKey)">{{:: 'publicKey' | translate}}</td>
+ <td data-ng-show="key.type === 'RSA'" class="kc-action-cell" data-ng-click="viewKey(key.certificate)">{{:: 'certificate' | translate}}</td>
- <td data-ng-show="key.certificate" class="kc-action-cell" data-ng-click="viewKey(key.certificate)">{{:: 'view' | translate}}</td>
- <td data-ng-hide="key.certificate"></td>
+ <td data-ng-show="key.type !== 'RSA'" colspan="2"></td>
</tr>
</tbody>
</table>
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys-providers.html 2017-01-03 09:29:30.000000000 -0500
@@ -27,7 +27,7 @@
<table class="table table-striped table-bordered">
<thead>
<tr ng-show="providers.length > 0 && access.manageRealm">
- <th colspan="6" class="kc-table-actions">
+ <th colspan="7" class="kc-table-actions">
<div class="pull-right">
<div>
<select class="form-control" ng-model="selectedProvider"
@@ -40,6 +40,7 @@
</th>
</tr>
<tr data-ng-show="instances && instances.length > 0">
+ <th>{{:: 'type' | translate}}</th>
<th>{{:: 'name' | translate}}</th>
<th>{{:: 'id' | translate}}</th>
<th>{{:: 'provider' | translate}}</th>
@@ -49,6 +50,7 @@
</thead>
<tbody>
<tr ng-repeat="instance in instances">
+ <td>{{instance.provider.metadata.algorithmType}}</td>
<td>{{instance.name}}</td>
<td><a href="#/realms/{{realm.realm}}/keys/providers/{{instance.providerId}}/{{instance.id}}">{{instance.id}}</a></td>
<td>{{instance.providerId}}</td>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-keys.html 2017-01-03 09:29:30.000000000 -0500
@@ -13,8 +13,7 @@
<th>{{:: 'type' | translate}}</th>
<th>{{:: 'kid' | translate}}</th>
<th>{{:: 'provider' | translate}}</th>
- <th>{{:: 'publicKey' | translate}}</th>
- <th>{{:: 'certificate' | translate}}</th>
+ <th colspan="2">{{:: 'publicKeys' | translate}}</th>
</tr>
</thead>
<tbody>
@@ -23,11 +22,10 @@
<td>{{key.kid}}</td>
<td><a href="#/realms/{{realm.realm}}/keys/providers/{{key.provider.providerId}}/{{key.provider.id}}">{{key.provider.name}}</a></td>
- <td data-ng-show="key.publicKey" class="kc-action-cell" data-ng-click="viewKey(key.publicKey)">{{:: 'view' | translate}}</td>
- <td data-ng-hide="key.publicKey"></td>
+ <td data-ng-show="key.type === 'RSA'" class="kc-action-cell" data-ng-click="viewKey(key.publicKey)">{{:: 'publicKey' | translate}}</td>
+ <td data-ng-show="key.type === 'RSA'" class="kc-action-cell" data-ng-click="viewKey(key.certificate)">{{:: 'certificate' | translate}}</td>
- <td data-ng-show="key.certificate" class="kc-action-cell" data-ng-click="viewKey(key.certificate)">{{:: 'view' | translate}}</td>
- <td data-ng-hide="key.certificate"></td>
+ <td data-ng-show="key.type !== 'RSA'" colspan="2"></td>
</tr>
</tbody>
</table>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-login-settings.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-login-settings.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-login-settings.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/realm-login-settings.html 2017-01-03 09:29:30.000000000 -0500
@@ -46,6 +46,20 @@
<kc-tooltip>{{:: 'verifyEmail.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group">
+ <label for="loginWithEmailAllowed" class="col-md-2 control-label">{{:: 'loginWithEmailAllowed' | translate}}</label>
+ <div class="col-md-6">
+ <input ng-model="realm.loginWithEmailAllowed" name="loginWithEmailAllowed" id="loginWithEmailAllowed" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
+ </div>
+ <kc-tooltip>{{:: 'loginWithEmailAllowed.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group" ng-show="!realm.loginWithEmailAllowed && !realm.registrationEmailAsUsername">
+ <label for="duplicateEmailsAllowed" class="col-md-2 control-label">{{:: 'duplicateEmailsAllowed' | translate}}</label>
+ <div class="col-md-6">
+ <input ng-model="realm.duplicateEmailsAllowed" name="duplicateEmailsAllowed" id="duplicateEmailsAllowed" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}" />
+ </div>
+ <kc-tooltip>{{:: 'duplicateEmailsAllowed.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group">
<label for="sslRequired" class="col-md-2 control-label">{{:: 'sslRequired' | translate}}</label>
<div class="col-md-2">
<div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/server-info.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/server-info.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/server-info.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/server-info.html 2017-01-03 09:29:30.000000000 -0500
@@ -16,7 +16,11 @@
</tr>
<tr>
<td width="20%">{{:: 'server-profile' | translate}}</td>
- <td>{{serverInfo.profileInfo.name}}</td>
+ <td>{{serverInfo.profileInfo.name | capitalize}}</td>
+ </tr>
+ <tr data-ng-if="serverInfo.profileInfo.disabledFeatures.length > 0">
+ <td width="20%">{{:: 'server-disabled' | translate}}</td>
+ <td>{{serverInfo.profileInfo.disabledFeatures.join(', ').toLowerCase() | capitalize}}</td>
</tr>
<tr>
<td>{{:: 'server-time' | translate}}</td>
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -81,12 +81,14 @@
<div class="col-md-6">
<a href="{{federationLink}}">{{federationLinkName}}</a>
</div>
+ <kc-tooltip>{{:: 'user-link.tooltip' | translate}}</kc-tooltip>
</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>
+ <kc-tooltip>{{:: 'user-origin.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix block">
<label class="col-md-2 control-label" for="emailVerified">{{:: 'email-verified' | translate}}</label>
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-federation.html 2017-01-03 09:29:30.000000000 -0500
@@ -3,7 +3,7 @@
<span>{{:: 'user-federation' | translate}}</span>
</h1>
- <div class="blank-slate-pf" data-ng-hide="instances && instances.length > 0">
+ <div class="blank-slate-pf" data-ng-hide="!instancesLoaded || (instances && instances.length > 0)">
<div class="blank-slate-pf-icon">
<span class="fa fa-database"></span>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-list.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-list.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-list.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-list.html 2017-01-03 09:29:30.000000000 -0500
@@ -31,7 +31,7 @@
<th class="w-15">{{:: 'email' | translate}}</th>
<th class="w-15">{{:: 'last-name' | translate}}</th>
<th class="w-15">{{:: 'first-name' | translate}}</th>
- <th colspan="{{access.impersonation == true ? '3' : '2'}}">{{:: 'actions' | translate}}</th>
+ <th colspan="{{serverInfo.profileInfo.disabledFeatures.indexOf('IMPERSONATION') == -1 && access.impersonation == true ? '3' : '2'}}">{{:: 'actions' | translate}}</th>
</tr>
</thead>
<tfoot data-ng-show="users && (users.length >= query.max || query.first > 0)">
@@ -53,7 +53,7 @@
<td class="clip">{{user.lastName}}</td>
<td class="clip">{{user.firstName}}</td>
<td class="kc-action-cell" kc-open="/realms/{{realm.realm}}/users/{{user.id}}">{{:: 'edit' | translate}}</td>
- <td data-ng-show="access.impersonation" class="kc-action-cell" data-ng-click="impersonate(user.id)">{{:: 'impersonate' | translate}}</td>
+ <td data-ng-show="serverInfo.profileInfo.disabledFeatures.indexOf('IMPERSONATION') == -1 && access.impersonation" class="kc-action-cell" data-ng-click="impersonate(user.id)">{{:: 'impersonate' | translate}}</td>
<td data-ng-show="access.manageUsers" class="kc-action-cell" data-ng-click="removeUser(user)">{{:: 'delete' | translate}}</td>
</tr>
<tr data-ng-show="!users || users.length == 0">
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials: user-storage-kerberos.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-ldap-mapper-detail.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-ldap-mapper-detail.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-ldap-mapper-detail.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/partials/user-storage-ldap-mapper-detail.html 2017-01-03 09:29:30.000000000 -0500
@@ -46,7 +46,7 @@
<kc-tooltip>{{mapperType.helpText}}</kc-tooltip>
</div>
- <kc-component-config realm="realm" config="mapper.config" properties="mapperType.properties"></kc-component-config>
+ <kc-component-config realm="realm" clients="clients" config="mapper.config" properties="mapperType.properties"></kc-component-config>
</fieldset>
diff -ru /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.5.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 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-menu.html 2017-01-03 09:29:30.000000000 -0500
@@ -39,9 +39,13 @@
|| 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[2] == 'user-federation'
+ || path[2] == 'user-storage'
+ || path[2] == 'ldap-mappers'
+ || path[1] == 'ldap-mappers'
+ || path[1] == 'user-storage'
+ ) && '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>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-tabs-client.html /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-tabs-client.html
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-tabs-client.html 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/admin/resources/templates/kc-tabs-client.html 2017-01-03 09:29:30.000000000 -0500
@@ -8,7 +8,7 @@
<ul class="nav nav-tabs" data-ng-hide="create && !path[4]">
<li ng-class="{active: !path[4]}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{:: 'settings' | translate}}</a></li>
- <li ng-class="{active: path[4] == 'credentials'}" data-ng-show="!client.publicClient && client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a></li>
+ <li ng-class="{active: path[4] == 'credentials'}" data-ng-show="!disableCredentialsTab && !client.publicClient && client.protocol != 'saml'"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/credentials">{{:: 'credentials' | translate}}</a></li>
<li ng-class="{active: path[4] == 'saml'}" data-ng-show="client.protocol == 'saml' && (client.attributes['saml.client.signature'] == 'true' || client.attributes['saml.encrypt'] == 'true')"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/saml/keys">{{:: 'saml-keys' | translate}}</a></li>
<li ng-class="{active: path[4] == 'roles'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/roles">{{:: 'roles' | translate}}</a></li>
<li ng-class="{active: path[4] == 'mappers'}" data-ng-show="!client.bearerOnly">
@@ -19,7 +19,7 @@
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/scope-mappings">{{:: 'scope' | translate}}</a>
<kc-tooltip>{{:: 'scope.tooltip' | translate}}</kc-tooltip>
</li>
- <li ng-class="{active: path[4] == 'authz'}" data-ng-show="serverInfo.profileInfo.previewEnabled && !disableAuthorizationTab && client.authorizationServicesEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server">{{:: 'authz-authorization' | translate}}</a></li>
+ <li ng-class="{active: path[4] == 'authz'}" data-ng-show="serverInfo.profileInfo.disabledFeatures.indexOf('AUTHORIZATION') == -1 && !disableAuthorizationTab && client.authorizationServicesEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server">{{:: 'authz-authorization' | translate}}</a></li>
<li ng-class="{active: path[4] == 'revocation'}"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/revocation">{{:: 'revocation' | translate}}</a></li>
<!-- <li ng-class="{active: path[4] == 'identity-provider'}" data-ng-show="realm.identityFederationEnabled"><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/identity-provider">Identity Provider</a></li> -->
<li ng-class="{active: path[4] == 'sessions'}" data-ng-show="!client.bearerOnly">
@@ -39,7 +39,7 @@
<kc-tooltip>{{:: 'installation.tooltip' | translate}}</kc-tooltip>
</li>
- <li ng-class="{active: path[4] == 'service-account-roles'}" data-ng-show="client.serviceAccountsEnabled && !(client.bearerOnly || client.publicClient)">
+ <li ng-class="{active: path[4] == 'service-account-roles'}" data-ng-show="!disableServiceAccountRolesTab && client.serviceAccountsEnabled && !(client.bearerOnly || client.publicClient)">
<a href="#/realms/{{realm.realm}}/clients/{{client.id}}/service-account-roles">{{:: 'service-account-roles' | translate}}</a>
<kc-tooltip>{{:: 'service-account-roles.tooltip' | translate}}</kc-tooltip>
</li>
Only in /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/admin/resources/templates: kc-tabs-user-federation.html
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/info.ftl /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/info.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/info.ftl 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/info.ftl 2017-01-03 09:29:30.000000000 -0500
@@ -9,7 +9,9 @@
<p class="instruction">${message.summary}</p>
<#if skipLink??>
<#else>
- <#if client.baseUrl??>
+ <#if pageRedirectUri??>
+ <p><a href="${pageRedirectUri}">${msg("backToApplication")}</a></p>
+ <#elseif client.baseUrl??>
<p><a href="${client.baseUrl}">${msg("backToApplication")}</a></p>
</#if>
</#if>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login-reset-password.ftl /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/login-reset-password.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login-reset-password.ftl 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/login-reset-password.ftl 2017-01-03 09:29:30.000000000 -0500
@@ -8,7 +8,7 @@
<form id="kc-reset-password-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
<div class="${properties.kcFormGroupClass!}">
<div class="${properties.kcLabelWrapperClass!}">
- <label for="username" class="${properties.kcLabelClass!}"><#if !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
+ <label for="username" class="${properties.kcLabelClass!}"><#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="username" name="username" class="${properties.kcInputClass!}" autofocus/>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login.ftl /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/login.ftl
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/base/login/login.ftl 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/base/login/login.ftl 2017-01-03 09:29:30.000000000 -0500
@@ -9,14 +9,14 @@
<form id="kc-form-login" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
<div class="${properties.kcFormGroupClass!}">
<div class="${properties.kcLabelWrapperClass!}">
- <label for="username" class="${properties.kcLabelClass!}"><#if !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
+ <label for="username" class="${properties.kcLabelClass!}"><#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<#if usernameEditDisabled??>
<input id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')?html}" type="text" disabled />
<#else>
- <input id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')?html}" type="text" autofocus />
+ <input id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')?html}" type="text" autofocus autocomplete="off" />
</#if>
</div>
</div>
diff -ru /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/admin/resources/css/styles.css /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/admin/resources/css/styles.css
--- /tmp/keycloak/jboss_keycloak-postgres-2.4.0.Final/jboss/keycloak/themes/keycloak/admin/resources/css/styles.css 2016-11-23 15:37:56.000000000 -0500
+++ /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/admin/resources/css/styles.css 2017-01-03 09:29:30.000000000 -0500
@@ -390,4 +390,13 @@
float: left;
margin-left: 2%;
width: 25%;
+}
+
+table.kc-authz-table-expanded {
+ margin-top: 0px !important;
+}
+
+.no-gutter > [class*='col-'] {
+ padding-right:0!important;
+ padding-left:0!important;
}
\ No newline at end of file
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/fileupload: angular-file-upload-html5-shim.js
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/fileupload: angular-file-upload-shim.js
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/fileupload: angular-file-upload.js
Only in /tmp/keycloak/jboss_keycloak-postgres-2.5.0.Final/jboss/keycloak/themes/keycloak/common/resources/lib/select2-3.4.1: select2.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment