diff --git a/services/src/main/java/org/keycloak/services/clientregistration/oidc/DescriptionConverter.java b/services/src/main/java/org/keycloak/services/clientregistration/oidc/DescriptionConverter.java
index 30b0b726f9..396f65c503 100755
--- a/services/src/main/java/org/keycloak/services/clientregistration/oidc/DescriptionConverter.java
+++ b/services/src/main/java/org/keycloak/services/clientregistration/oidc/DescriptionConverter.java
@@ -95,7 +95,7 @@ public class DescriptionConverter {
try {
OIDCResponseType responseType = OIDCResponseType.parse(oidcResponseTypes);
- client.setStandardFlowEnabled(responseType.hasResponseType(OIDCResponseType.CODE));
+ client.setStandardFlowEnabled(responseType.hasResponseType(OIDCResponseType.CODE) || responseType.hasResponseType(OIDCResponseType.NONE));
client.setImplicitFlowEnabled(responseType.isImplicitOrHybridFlow());
if (oidcGrantTypes != null) {
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/OIDCClientRegistrationTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/OIDCClientRegistrationTest.java
index 2d27f8939b..c326fba1f3 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/OIDCClientRegistrationTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/client/OIDCClientRegistrationTest.java
@@ -203,6 +203,30 @@ public class OIDCClientRegistrationTest extends AbstractClientRegistrationTest {
assertTrue(CollectionUtil.collectionEquals(realmDefaultClientScopes, registeredDefaultClientScopes));
}
+ @Test
+ public void createClientResponseTypeNone() throws ClientRegistrationException {
+ OIDCClientRepresentation client = createRep();
+ client.setResponseTypes(List.of("none"));
+ OIDCClientRepresentation response = reg.oidc().create(client);
+
+ assertNotNull(response.getRegistrationAccessToken());
+ assertNotNull(response.getClientIdIssuedAt());
+ assertNotNull(response.getClientId());
+ assertNotNull(response.getClientSecret());
+ assertEquals(0, response.getClientSecretExpiresAt().intValue());
+ assertEquals(AUTH_SERVER_ROOT + "/realms/" + REALM_NAME + "/clients-registrations/openid-connect/" + response.getClientId(), response.getRegistrationClientUri());
+ assertEquals("RegistrationAccessTokenTest", response.getClientName());
+ assertEquals("http://root", response.getClientUri());
+ assertEquals(1, response.getRedirectUris().size());
+ assertEquals("http://redirect", response.getRedirectUris().get(0));
+ assertEquals(List.of("code", "none"), response.getResponseTypes());
+ assertEquals(Arrays.asList(OAuth2Constants.AUTHORIZATION_CODE, OAuth2Constants.REFRESH_TOKEN), response.getGrantTypes());
+ assertEquals(OIDCLoginProtocol.CLIENT_SECRET_BASIC, response.getTokenEndpointAuthMethod());
+ Assert.assertNull(response.getUserinfoSignedResponseAlg());
+ assertEquals("http://frontchannel", response.getFrontChannelLogoutUri());
+ assertTrue(response.getFrontchannelLogoutSessionRequired());
+ }
+
@Test
public void updateClientError() throws ClientRegistrationException {
try {
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oidc/flows/OIDCBasicResponseTypeNoneTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oidc/flows/OIDCBasicResponseTypeNoneTest.java
new file mode 100644
index 0000000000..b8576377eb
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/oidc/flows/OIDCBasicResponseTypeNoneTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2016 Red Hat, Inc. and/or its affiliates
+ * and other contributors as indicated by the @author tags.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.keycloak.testsuite.oidc.flows;
+
+import org.junit.Before;
+import org.keycloak.events.Details;
+import org.keycloak.protocol.oidc.utils.OIDCResponseType;
+import org.keycloak.representations.IDToken;
+import org.keycloak.representations.idm.EventRepresentation;
+import org.keycloak.testsuite.Assert;
+import org.keycloak.testsuite.util.OAuthClient;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Test for response_type=none
+ *
+ * @author Giuseppe Graziano
+ */
+public class OIDCBasicResponseTypeNoneTest extends AbstractOIDCResponseTypeTest {
+
+ @Before
+ public void clientConfiguration() {
+ clientManagerBuilder().standardFlow(true).implicitFlow(false);
+
+ oauth.clientId("test-app");
+ oauth.responseType(OIDCResponseType.NONE);
+ }
+
+
+ @Override
+ protected boolean isFragment() {
+ return false;
+ }
+
+ @Override
+ protected List testAuthzResponseAndRetrieveIDTokens(OAuthClient.AuthorizationEndpointResponse authzResponse, EventRepresentation loginEvent) {
+ Assert.assertEquals(OIDCResponseType.NONE, loginEvent.getDetails().get(Details.RESPONSE_TYPE));
+
+ Assert.assertNull(authzResponse.getCode());
+ Assert.assertNull(authzResponse.getAccessToken());
+ Assert.assertNull(authzResponse.getIdToken());
+ return Collections.emptyList();
+ }
+}