keycloak-aplcache

Details

diff --git a/model/jpa/src/main/resources/META-INF/jpa-changelog-3.4.2.xml b/model/jpa/src/main/resources/META-INF/jpa-changelog-3.4.2.xml
index 6d962d7..4c1e6fb 100644
--- a/model/jpa/src/main/resources/META-INF/jpa-changelog-3.4.2.xml
+++ b/model/jpa/src/main/resources/META-INF/jpa-changelog-3.4.2.xml
@@ -25,4 +25,11 @@
         </update>
     </changeSet>
 
+    <changeSet author="mkanis@redhat.com" id="3.4.2-KEYCLOAK-5172">
+        <update tableName="CLIENT">
+            <column name="PROTOCOL" type="VARCHAR(255)" value="openid-connect"/>
+            <where>PROTOCOL IS NULL</where>
+        </update>
+    </changeSet>
+
 </databaseChangeLog>
diff --git a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
index 1448c5b..34ee766 100755
--- a/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
+++ b/server-spi-private/src/main/java/org/keycloak/models/utils/RepresentationToModel.java
@@ -122,6 +122,7 @@ import org.keycloak.util.JsonSerialization;
 public class RepresentationToModel {
 
     private static Logger logger = Logger.getLogger(RepresentationToModel.class);
+    public static final String OIDC = "openid-connect";
 
     public static OTPPolicy toPolicy(RealmRepresentation rep) {
         OTPPolicy policy = new OTPPolicy();
@@ -1048,7 +1049,13 @@ public class RepresentationToModel {
         if (resourceRep.isPublicClient() != null) client.setPublicClient(resourceRep.isPublicClient());
         if (resourceRep.isFrontchannelLogout() != null)
             client.setFrontchannelLogout(resourceRep.isFrontchannelLogout());
-        if (resourceRep.getProtocol() != null) client.setProtocol(resourceRep.getProtocol());
+
+        // set defaults to openid-connect if no protocol specified
+        if (resourceRep.getProtocol() != null) {
+            client.setProtocol(resourceRep.getProtocol());
+        } else {
+            client.setProtocol(OIDC);
+        }
         if (resourceRep.getNodeReRegistrationTimeout() != null) {
             client.setNodeReRegistrationTimeout(resourceRep.getNodeReRegistrationTimeout());
         } else {
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/ClientRegistrationTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/ClientRegistrationTest.java
index f586d62..f24b95a 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/ClientRegistrationTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/ClientRegistrationTest.java
@@ -124,6 +124,14 @@ public class ClientRegistrationTest extends AbstractClientRegistrationTest {
     }
 
     @Test
+    public void registerClientWithoutProtocol() throws ClientRegistrationException {
+        authCreateClients();
+        ClientRepresentation clientRepresentation = registerClient();
+
+        assertEquals("openid-connect", clientRepresentation.getProtocol());
+    }
+
+    @Test
     public void registerClientAsAdminWithCreateOnly() throws ClientRegistrationException {
         authCreateClients();
         registerClient();