From 4ade1b6ea4b3c799b0bfa2443759f0c1643817d5 Mon Sep 17 00:00:00 2001 From: Anatolii Bazko Date: Mon, 2 Feb 2026 17:13:48 +0100 Subject: [PATCH 1/7] feat: Support OpenShift external IDP Signed-off-by: Anatolii Bazko --- .../che/DashboardRedirectionFilterTest.java | 9 +- assembly/assembly-wsmaster-war/pom.xml | 6 +- .../che/api/deploy/WsMasterModule.java | 70 ++++++----- .../che/api/deploy/WsMasterServletModule.java | 40 +++--- .../WEB-INF/classes/che/multiuser.properties | 14 ++- .../eclipse/che/commons/subject/Subject.java | 13 +- .../che/commons/subject/SubjectImpl.java | 20 ++- .../core/rest/DefaultHttpJsonRequestTest.java | 5 +- .../commons/env/EnvironmentContextTest.java | 7 +- ...ernetesPersonalAccessTokenManagerTest.java | 52 ++++++-- .../KubernetesEnvironmentProvisioner.java | 2 +- .../kubernetes/KubernetesInfraModule.java | 5 +- .../authorization/AuthorizationChecker.java | 5 +- .../KubernetesAuthorizationCheckerImpl.java | 48 -------- ...ubernetesOIDCAuthorizationCheckerImpl.java | 76 ++++++++++++ .../namespace/KubernetesNamespaceFactory.java | 12 +- .../KubernetesEnvironmentProvisionerTest.java | 2 +- .../KubernetesNamespaceServiceTest.java | 5 +- .../KubernetesAuthorizationCheckerTest.java | 115 ++++++++++++++++-- ...DockerRegistryCredentialsProviderTest.java | 6 +- ...bernetesOidcProviderConfigFactoryTest.java | 6 +- .../KubernetesNamespaceFactoryTest.java | 26 ++-- .../provision/GitConfigProvisionerTest.java | 5 +- .../OpenShiftEnvironmentProvisioner.java | 2 +- .../openshift/OpenShiftInfraModule.java | 5 +- .../OpenShiftAuthorizationCheckerImpl.java | 6 +- .../OpenshiftTokenInitializationFilter.java | 6 +- .../project/OpenShiftProjectFactory.java | 4 +- .../OpenShiftEnvironmentProvisionerTest.java | 2 +- .../OpenShiftAuthorizationCheckerTest.java | 42 ++++--- .../project/OpenShiftProjectFactoryTest.java | 24 ++-- ...erEnvironmentInitializationFilterTest.java | 12 +- .../permission/server/AuthorizedSubject.java | 8 +- .../api/OrganizationManagerTest.java | 5 +- .../api/OrganizationServiceTest.java | 7 +- ...ycloakEnvironmentInitializationFilter.java | 7 +- .../server/MachineLoginFilter.java | 5 +- .../server/MachineLoginFilterTest.java | 3 +- .../server/MachineTokenRegistryTest.java | 2 + multiuser/oidc/pom.xml | 10 +- .../che/multiuser/oidc/OIDCInfoProvider.java | 5 +- .../filter/OidcTokenInitializationFilter.java | 59 ++++++--- .../OidcTokenInitializationFilterTest.java | 92 ++++++++------ .../devfile/server/TestObjectGenerator.java | 5 +- .../devfile/server/TestObjectGenerator.java | 5 +- ...eDevOpsPersonalAccessTokenFetcherTest.java | 7 +- ...tServerPersonalAccessTokenFetcherTest.java | 5 +- .../BitbucketServerUserDataFetcherTest.java | 6 +- ...tbucketPersonalAccessTokenFetcherTest.java | 11 +- .../GithubPersonalAccessTokenFetcherTest.java | 10 +- .../gitlab/GitlabOAuthTokenFetcherTest.java | 13 +- .../factory/server/FactoryServiceTest.java | 7 +- .../che/api/logger/LoggerServiceTest.java | 5 +- .../server/WorkspaceManagerTest.java | 74 ++--------- 54 files changed, 618 insertions(+), 385 deletions(-) delete mode 100644 infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/authorization/KubernetesAuthorizationCheckerImpl.java create mode 100644 infrastructures/kubernetes/src/main/java/org/eclipse/che/workspace/infrastructure/kubernetes/authorization/KubernetesOIDCAuthorizationCheckerImpl.java diff --git a/assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java b/assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java index 52b920c5efd..2f92f38cbc1 100644 --- a/assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java +++ b/assembly/assembly-root-war/src/test/java/org/eclipse/che/DashboardRedirectionFilterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2025 Red Hat, Inc. + * Copyright (c) 2012-2026 Red Hat, Inc. * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 * which is available at https://www.eclipse.org/legal/epl-2.0/ @@ -22,6 +22,7 @@ import jakarta.servlet.ServletResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.util.Collections; import org.eclipse.che.commons.env.EnvironmentContext; import org.eclipse.che.commons.subject.SubjectImpl; import org.mockito.InjectMocks; @@ -50,7 +51,8 @@ public void shouldRedirectIfGetRequestIsNotNamespaceWorkspaceName(String uri) th when(request.getMethod()).thenReturn("GET"); when(request.getRequestURI()).thenReturn(uri); EnvironmentContext context = new EnvironmentContext(); - context.setSubject(new SubjectImpl("id123", "name", "token123", false)); + context.setSubject( + new SubjectImpl("id123", Collections.emptyList(), "name", "token123", false)); EnvironmentContext.setCurrent(context); // when @@ -66,7 +68,8 @@ public void shouldRedirectIfHEADRequestIsNotNamespaceWorkspaceName(String uri) t when(request.getMethod()).thenReturn("HEAD"); when(request.getRequestURI()).thenReturn(uri); EnvironmentContext context = new EnvironmentContext(); - context.setSubject(new SubjectImpl("id123", "name", "token123", false)); + context.setSubject( + new SubjectImpl("id123", Collections.emptyList(), "name", "token123", false)); EnvironmentContext.setCurrent(context); // when diff --git a/assembly/assembly-wsmaster-war/pom.xml b/assembly/assembly-wsmaster-war/pom.xml index c32a84a8130..09438b0bf37 100644 --- a/assembly/assembly-wsmaster-war/pom.xml +++ b/assembly/assembly-wsmaster-war/pom.xml @@ -1,7 +1,7 @@