diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
index 6eeed64..cbcb3a6 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
@@ -577,6 +577,9 @@ module.config([ '$routeProvider', function($routeProvider) {
},
application : function() {
return {};
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
}
},
controller : 'ApplicationDetailCtrl'
@@ -592,6 +595,9 @@ module.config([ '$routeProvider', function($routeProvider) {
},
application : function(ApplicationLoader) {
return ApplicationLoader();
+ },
+ serverInfo : function(ServerInfoLoader) {
+ return ServerInfoLoader();
}
},
controller : 'ApplicationDetailCtrl'
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/applications.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/applications.js
index 07b59cc..318f1bb 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/applications.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/applications.js
@@ -411,7 +411,7 @@ module.controller('ApplicationInstallationCtrl', function($scope, realm, applica
}
});
-module.controller('ApplicationDetailCtrl', function($scope, realm, application, Application, $location, Dialog, Notifications) {
+module.controller('ApplicationDetailCtrl', function($scope, realm, application, serverInfo, Application, $location, Dialog, Notifications) {
console.log('ApplicationDetailCtrl');
$scope.accessTypes = [
@@ -420,10 +420,8 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, application,
"bearer-only"
];
- $scope.protocols = [
- "openid-connect",
- "saml"
- ];
+ $scope.protocols = serverInfo.protocols;
+
$scope.signatureAlgorithms = [
"RSA_SHA1",
"RSA_SHA256",
@@ -451,11 +449,9 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, application,
} else if (application.publicClient) {
$scope.accessType = $scope.accessTypes[1];
}
- if (application.protocol == 'openid-connect') {
- $scope.protocol = $scope.protocols[0];
- } else if (application.protocol == 'saml') {
- $scope.protocol = $scope.protocols[1];
- } else { // protocol could be null due to older keycloak installs
+ if (application.protocol) {
+ $scope.protocol = $scope.protocols[$scope.protocols.indexOf(application.protocol)];
+ } else {
$scope.protocol = $scope.protocols[0];
}
if (application.attributes['saml.signature.algorithm'] == 'RSA_SHA1') {
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
index 42f3264..33e6b29 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
@@ -5,6 +5,9 @@ import org.keycloak.events.EventListenerProvider;
import org.keycloak.freemarker.Theme;
import org.keycloak.freemarker.ThemeProvider;
import org.keycloak.models.KeycloakSession;
+import org.keycloak.protocol.LoginProtocol;
+import org.keycloak.protocol.LoginProtocolFactory;
+import org.keycloak.provider.ProviderFactory;
import org.keycloak.social.SocialProvider;
import org.keycloak.util.ProviderLoader;
@@ -37,6 +40,7 @@ public class ServerInfoAdminResource {
setSocialProviders(info);
setThemes(info);
setEventListeners(info);
+ setProtocols(info);
return info;
}
@@ -69,6 +73,17 @@ public class ServerInfoAdminResource {
}
}
+
+ private void setProtocols(ServerInfoRepresentation info) {
+ info.protocols = new LinkedList<String>();
+ for (ProviderFactory p : session.getKeycloakSessionFactory().getProviderFactories(LoginProtocol.class)) {
+ info.protocols.add(p.getId());
+ }
+ Collections.sort(info.protocols);
+ }
+
+
+
public static class ServerInfoRepresentation {
private String version;
@@ -76,6 +91,8 @@ public class ServerInfoAdminResource {
private Map<String, List<String>> themes;
private List<String> socialProviders;
+ private List<String> protocols;
+ private List<String> applicationImporters;
private List<String> eventListeners;
@@ -102,6 +119,14 @@ public class ServerInfoAdminResource {
public List<String> getEventListeners() {
return eventListeners;
}
+
+ public List<String> getProtocols() {
+ return protocols;
+ }
+
+ public List<String> getApplicationImporters() {
+ return applicationImporters;
+ }
}
}