diff --git a/assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js b/assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js index c152d5152a..e3e247a469 100644 --- a/assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js +++ b/assembly/assembly-root-war/src/main/webapp/_app/keycloackLoader.js @@ -110,8 +110,8 @@ export class KeycloakLoader { onLoad: 'login-required', checkLoginIframe: false, useNonce: useNonce, - scope: 'email profile', - redirectUri: keycloakSettings['che.keycloak.redirect_url.ide'] + scope: 'openid', + redirectUri: decodeURIComponent(location.href) }) .success(() => { resolve(keycloak); diff --git a/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/deployment.yaml b/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/deployment.yaml index d62d758a72..c4451fbff8 100644 --- a/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/deployment.yaml +++ b/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/deployment.yaml @@ -74,8 +74,13 @@ spec: - name: CHE_HOST value: {{ template "cheHost" . }} {{- if .Values.global.useInternalClusterSVCNames }} - - name: KEYCLOAK_HOSTNAME - value: {{ template "keycloakHost" . }} + {{- if .Values.global.tls.enabled }} + - name: KEYCLOAK_FRONTEND_URL + value: https://{{ template "keycloakHost" . }}/auth + {{- else }} + - name: KEYCLOAK_FRONTEND_URL + value: http://{{ template "keycloakHost" . }}/auth + {{- end }} {{- end }} - name: ROUTING_SUFFIX value: {{ .Values.global.ingressDomain }} diff --git a/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/ingress.yaml b/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/ingress.yaml index c45fc7ed04..7f7cec9110 100644 --- a/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/ingress.yaml +++ b/deploy/kubernetes/helm/che/custom-charts/che-keycloak/templates/ingress.yaml @@ -18,6 +18,7 @@ metadata: component: keycloak annotations: kubernetes.io/ingress.class: {{ .Values.global.ingress.class | quote }} + nginx.ingress.kubernetes.io/proxy-buffer-size: "16k" {{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/proxy-read-timeout: "3600" {{ .Values.global.ingressAnnotationsPrefix }}ingress.kubernetes.io/proxy-connect-timeout: "3600" {{- if .Values.global.tls.enabled }} diff --git a/dockerfiles/keycloak/Dockerfile b/dockerfiles/keycloak/Dockerfile index 23d576e434..0af6915087 100644 --- a/dockerfiles/keycloak/Dockerfile +++ b/dockerfiles/keycloak/Dockerfile @@ -6,15 +6,15 @@ # SPDX-License-Identifier: EPL-2.0 # -FROM jboss/keycloak:6.0.1 +FROM quay.io/keycloak/keycloak:15.0.2 + ADD che /opt/jboss/keycloak/themes/che ADD che-username-readonly /opt/jboss/keycloak/themes/che-username-readonly ADD . /scripts/ ADD cli /scripts/cli -RUN ln -s /opt/jboss/tools/docker-entrypoint.sh && \ - curl -sSL https://github.com/che-incubator/KEYCLOAK-10169-OpenShift4-User-Provider/releases/download/6.0.1-openshift-v4/openshift4-extension-6.0.1.jar -o /opt/jboss/keycloak/standalone/deployments/openshift4-extension-6.0.1.jar && \ - unzip -j /opt/jboss/keycloak/standalone/deployments/openshift4-extension-6.0.1.jar -d /opt/jboss/keycloak/themes/base/admin/resources/partials \ - theme-resources/resources/realm-identity-provider-openshift-v4.html theme-resources/resources/realm-identity-provider-openshift-v4-ext.html +USER root +RUN microdnf install findutils && microdnf clean all && \ + ln -s /opt/jboss/tools/docker-entrypoint.sh && chmod +x /opt/jboss/tools/docker-entrypoint.sh USER root RUN chown -R 1000:0 /scripts && \ diff --git a/dockerfiles/keycloak/kc_realm_user.sh b/dockerfiles/keycloak/kc_realm_user.sh index 7d74f69886..357f42cc2b 100755 --- a/dockerfiles/keycloak/kc_realm_user.sh +++ b/dockerfiles/keycloak/kc_realm_user.sh @@ -66,12 +66,6 @@ cat /scripts/che-realm.json.erb | \ sed -e "s@<%= scope\.lookupvar('che::che_server_url') %>@${PROTOCOL}://${CHE_HOST}@" \ > /scripts/che-realm.json -echo "Creating Admin user..." - -if [ $KEYCLOAK_USER ] && [ $KEYCLOAK_PASSWORD ]; then - /opt/jboss/keycloak/bin/add-user-keycloak.sh --user $KEYCLOAK_USER --password $KEYCLOAK_PASSWORD -fi - # Handle CA certificates KEYSTORE_PATH=/scripts/openshift.jks TRUST_STORE_PASSWORD=${TRUSTPASS:-openshift} @@ -96,10 +90,6 @@ if [ -f "$KEYSTORE_PATH" ]; then /opt/jboss/keycloak/bin/jboss-cli.sh --file=/scripts/cli/add_openshift_certificate.cli && rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history fi -# Patch configuration to allow to set 'keycloak.hostname.fixed.alwaysHttps' -sed -i 's|||g' /opt/jboss/keycloak/standalone/configuration/standalone.xml -sed -i 's|||g' /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml - # POSTGRES_PORT is assigned by Kubernetes controller # and it isn't fit to docker-entrypoin.sh. unset POSTGRES_PORT @@ -112,8 +102,4 @@ SYS_PROPS="-Dkeycloak.migration.action=import \ -Dkeycloak.migration.dir=/scripts/ \ -Djboss.bind.address=0.0.0.0" -if [ $KEYCLOAK_HOSTNAME ] && [ $PROTOCOL == "https" ]; then - SYS_PROPS+=" -Dkeycloak.hostname.fixed.alwaysHttps=true" -fi - -exec /opt/jboss/docker-entrypoint.sh $SYS_PROPS +exec /opt/jboss/tools/docker-entrypoint.sh $SYS_PROPS