This is an automated email from the ASF dual-hosted git repository. quantranhong1999 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit fab402a48072a78837e8e1f45a6415d95dd87ab4 Author: Quan Tran <[email protected]> AuthorDate: Fri Jul 3 17:42:16 2026 +0700 JAMES-4195 Remove default Guice binding for JMAP OIDC backchannel route And drop dedicated app's configuration for JMAP OIDC enabled. --- docs/modules/servers/partials/configure/jmap.adoc | 13 +++++++-- .../james/CassandraRabbitMQJamesConfiguration.java | 29 ++---------------- .../james/CassandraRabbitMQJamesServerMain.java | 16 ++-------- .../org/apache/james/MemoryJamesConfiguration.java | 29 ++---------------- .../org/apache/james/MemoryJamesServerMain.java | 15 ++-------- .../apache/james/PostgresJamesConfiguration.java | 33 +-------------------- .../org/apache/james/PostgresJamesServerMain.java | 18 ++++-------- .../oidc/OidcBackchannelLogoutRoutesModule.java | 34 ---------------------- .../DistributedOidcAuthenticationTest.java | 2 +- .../memory/MemoryOidcAuthenticationTest.java | 2 +- .../postgres/PostgresOidcAuthenticationTest.java | 4 ++- 11 files changed, 29 insertions(+), 166 deletions(-) diff --git a/docs/modules/servers/partials/configure/jmap.adoc b/docs/modules/servers/partials/configure/jmap.adoc index 45a0abe11a..5fe4cf5bd7 100644 --- a/docs/modules/servers/partials/configure/jmap.adoc +++ b/docs/modules/servers/partials/configure/jmap.adoc @@ -170,8 +170,15 @@ curl -H "Authorization: Bearer $token" -XPOST http://127.0.0.1:80/jmap -d '...' OIDC token information is cached. The memory app uses an in-memory Caffeine cache. Postgres and distributed apps use the Redis cache when `redis.properties` is present, otherwise they use the in-memory cache. -Backchannel logout is exposed as a WebAdmin route at `POST /add-revoked-token` and expects an `application/x-www-form-urlencoded` -body containing the `logout_token` parameter. The token payload must contain the `sid` claim to invalidate related cached access tokens. +Backchannel logout is available as an optional WebAdmin extension route. To expose `POST /add-revoked-token`, +add this route to `webadmin.properties` when `OidcAuthenticationStrategy` is enabled: + +.... +extensions.routes=org.apache.james.webadmin.oidc.OidcBackchannelLogoutRoutes +.... + +The route expects an `application/x-www-form-urlencoded` body containing the `logout_token` parameter. +The token payload must contain the `sid` claim to invalidate related cached access tokens. The use of `XUserAuthenticationStrategy` allow delegating the authentication responsibility to a third party system, which could be used to set up authentication against an OIDC provider. @@ -242,4 +249,4 @@ _jmap._tcp.domain.tld. 3600 IN SRV 0 1 443 jmap.domain.tld. James implementation adds the value of `X-Real-IP` header as part of the logging MDC. -This allows for reverse proxies to cary other the IP address of the client down to the JMAP server for diagnostic purpose. \ No newline at end of file +This allows for reverse proxies to cary other the IP address of the client down to the JMAP server for diagnostic purpose. diff --git a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java index ce8a7906a7..000bce61eb 100644 --- a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java +++ b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesConfiguration.java @@ -28,7 +28,6 @@ import org.apache.james.data.UsersRepositoryModuleChooser; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.filesystem.api.JamesDirectoriesProvider; import org.apache.james.jmap.JMAPModule; -import org.apache.james.jmap.oidc.JMAPOidcConfiguration; import org.apache.james.jmap.oidc.redis.OidcTokenCacheModuleChooser; import org.apache.james.modules.blobstore.BlobStoreConfiguration; import org.apache.james.modules.queue.rabbitmq.MailQueueViewChoice; @@ -53,7 +52,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation; private Optional<VaultConfiguration> vaultConfiguration; private Optional<Boolean> jmapEnabled; - private Optional<Boolean> jmapOidcEnabled; private Optional<OidcTokenCacheModuleChooser.Implementation> oidcTokenCacheImplementation; private Optional<Boolean> quotaCompatibilityMode; private Optional<Boolean> dropListsEnabled; @@ -68,7 +66,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { mailQueueChoice = Optional.empty(); vaultConfiguration = Optional.empty(); jmapEnabled = Optional.empty(); - jmapOidcEnabled = Optional.empty(); oidcTokenCacheImplementation = Optional.empty(); quotaCompatibilityMode = Optional.empty(); dropListsEnabled = Optional.empty(); @@ -137,11 +134,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { return this; } - public Builder enableJMAPOidc() { - this.jmapOidcEnabled = Optional.of(true); - return this; - } - public Builder oidcTokenCacheImplementation(OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation) { this.oidcTokenCacheImplementation = Optional.of(oidcTokenCacheImplementation); return this; @@ -203,18 +195,8 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { } }); - boolean jmapOidcEnabled = this.jmapOidcEnabled.orElseGet(() -> { - try { - return JMAPOidcConfiguration.parseConfiguration(propertiesProvider).getOidcEnabled(); - } catch (FileNotFoundException e) { - return false; - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - }); - OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation = this.oidcTokenCacheImplementation.orElseGet(() -> { - if (jmapOidcEnabled) { + if (jmapEnabled) { return OidcTokenCacheModuleChooser.Implementation.from(propertiesProvider); } return OidcTokenCacheModuleChooser.Implementation.CAFFEINE; @@ -249,7 +231,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { mailQueueChoice, mailQueueViewChoice, vaultConfiguration, jmapEnabled, - jmapOidcEnabled, oidcTokenCacheImplementation, quotaCompatibilityMode, dropListsEnabled); @@ -269,7 +250,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { private final MailQueueViewChoice mailQueueViewChoice; private final VaultConfiguration vaultConfiguration; private final boolean jmapEnabled; - private final boolean jmapOidcEnabled; private final OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation; private final boolean quotaCompatibilityMode; private final boolean dropListsEnabled; @@ -278,7 +258,7 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { BlobStoreConfiguration blobStoreConfiguration, SearchConfiguration searchConfiguration, UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, MailQueueChoice mailQueueChoice, MailQueueViewChoice mailQueueViewChoice, VaultConfiguration vaultConfiguration, - boolean jmapEnabled, boolean jmapOidcEnabled, + boolean jmapEnabled, OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation, boolean quotaCompatibilityMode, boolean dropListsEnabled) { this.configurationPath = configurationPath; @@ -290,7 +270,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { this.mailQueueViewChoice = mailQueueViewChoice; this.vaultConfiguration = vaultConfiguration; this.jmapEnabled = jmapEnabled; - this.jmapOidcEnabled = jmapOidcEnabled; this.oidcTokenCacheImplementation = oidcTokenCacheImplementation; this.quotaCompatibilityMode = quotaCompatibilityMode; this.dropListsEnabled = dropListsEnabled; @@ -334,10 +313,6 @@ public class CassandraRabbitMQJamesConfiguration implements Configuration { return jmapEnabled; } - public boolean isJmapOidcEnabled() { - return jmapOidcEnabled; - } - public OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation() { return oidcTokenCacheImplementation; } diff --git a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java index 84289b2547..5ae708f834 100644 --- a/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java +++ b/server/apps/distributed-app/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java @@ -97,7 +97,6 @@ import org.apache.james.modules.server.VacationRoutesModule; import org.apache.james.modules.server.WebAdminMailOverWebModule; import org.apache.james.modules.server.WebAdminReIndexingTaskSerializationModule; import org.apache.james.modules.server.WebAdminServerModule; -import org.apache.james.modules.server.oidc.OidcBackchannelLogoutRoutesModule; import org.apache.james.modules.vault.DeletedMessageVaultRoutesModule; import org.apache.james.modules.webadmin.CassandraRoutesModule; import org.apache.james.modules.webadmin.InconsistencySolvingRoutesModule; @@ -219,7 +218,6 @@ public class CassandraRabbitMQJamesServerMain implements JamesServerMain { .chooseModules(configuration.getUsersRepositoryImplementation())) .combineWith(chooseDeletedMessageVault(configuration.getVaultConfiguration())) .combineWith(chooseQuotaModule(configuration)) - .combineWith(chooseJmapOidcModules(configuration)) .overrideWith(chooseJmapModules(configuration)) .overrideWith(chooseDropListsModule(configuration)); } @@ -251,19 +249,9 @@ public class CassandraRabbitMQJamesServerMain implements JamesServerMain { private static Module chooseJmapModules(CassandraRabbitMQJamesConfiguration configuration) { if (configuration.isJmapEnabled()) { - return Modules.combine(new JMAPEventBusModule(), new JMAPListenerModule()); - } - return binder -> { - - }; - } - - private static Module chooseJmapOidcModules(CassandraRabbitMQJamesConfiguration configuration) { - if (configuration.isJmapEnabled() && configuration.isJmapOidcEnabled()) { - return Modules.combine( + return Modules.combine(new JMAPEventBusModule(), new JMAPListenerModule(), new JMAPOidcModule(), - OidcTokenCacheModuleChooser.chooseModules(configuration.oidcTokenCacheImplementation()), - new OidcBackchannelLogoutRoutesModule()); + OidcTokenCacheModuleChooser.chooseModules(configuration.oidcTokenCacheImplementation())); } return Modules.EMPTY_MODULE; } diff --git a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesConfiguration.java b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesConfiguration.java index 82cb315171..aa0e08f3f1 100644 --- a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesConfiguration.java +++ b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesConfiguration.java @@ -28,7 +28,6 @@ import org.apache.james.data.UsersRepositoryModuleChooser; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.filesystem.api.JamesDirectoriesProvider; import org.apache.james.jmap.JMAPModule; -import org.apache.james.jmap.oidc.JMAPOidcConfiguration; import org.apache.james.server.core.JamesServerResourceLoader; import org.apache.james.server.core.MissingArgumentException; import org.apache.james.server.core.configuration.Configuration; @@ -42,7 +41,6 @@ public class MemoryJamesConfiguration implements Configuration { private Optional<ConfigurationPath> configurationPath; private Optional<UsersRepositoryModuleChooser.Implementation> usersRepositoryImplementation; private Optional<Boolean> jmapEnabled; - private Optional<Boolean> jmapOidcEnabled; private Optional<Boolean> dropListsEnabled; private Builder() { @@ -50,7 +48,6 @@ public class MemoryJamesConfiguration implements Configuration { configurationPath = Optional.empty(); usersRepositoryImplementation = Optional.empty(); jmapEnabled = Optional.empty(); - jmapOidcEnabled = Optional.empty(); dropListsEnabled = Optional.empty(); } @@ -92,11 +89,6 @@ public class MemoryJamesConfiguration implements Configuration { return this; } - public Builder enableJMAPOidc() { - this.jmapOidcEnabled = Optional.of(true); - return this; - } - public Builder enableDropLists() { this.dropListsEnabled = Optional.of(true); return this; @@ -127,17 +119,6 @@ public class MemoryJamesConfiguration implements Configuration { } }); - boolean jmapOidcEnabled = this.jmapOidcEnabled.orElseGet(() -> { - PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath); - try { - return JMAPOidcConfiguration.parseConfiguration(propertiesProvider).getOidcEnabled(); - } catch (FileNotFoundException e) { - return false; - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - }); - boolean dropListsEnabled = this.dropListsEnabled.orElseGet(() -> { PropertiesProvider propertiesProvider = new PropertiesProvider(fileSystem, configurationPath); try { @@ -153,7 +134,7 @@ public class MemoryJamesConfiguration implements Configuration { return new MemoryJamesConfiguration( configurationPath, directories, - usersRepositoryChoice, jmapEnabled, jmapOidcEnabled, dropListsEnabled); + usersRepositoryChoice, jmapEnabled, dropListsEnabled); } } @@ -165,17 +146,15 @@ public class MemoryJamesConfiguration implements Configuration { private final JamesDirectoriesProvider directories; private final UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation; private final boolean jmapEnabled; - private final boolean jmapOidcEnabled; private final boolean dropListsEnabled; public MemoryJamesConfiguration(ConfigurationPath configurationPath, JamesDirectoriesProvider directories, UsersRepositoryModuleChooser.Implementation usersRepositoryImplementation, - boolean jmapEnabled, boolean jmapOidcEnabled, boolean dropListsEnabled) { + boolean jmapEnabled, boolean dropListsEnabled) { this.configurationPath = configurationPath; this.directories = directories; this.usersRepositoryImplementation = usersRepositoryImplementation; this.jmapEnabled = jmapEnabled; - this.jmapOidcEnabled = jmapOidcEnabled; this.dropListsEnabled = dropListsEnabled; } @@ -197,10 +176,6 @@ public class MemoryJamesConfiguration implements Configuration { return jmapEnabled; } - public boolean isJmapOidcEnabled() { - return jmapOidcEnabled; - } - public boolean isDropListsEnabled() { return dropListsEnabled; } diff --git a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java index 4d21dd8a65..f80c9c3a41 100644 --- a/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java +++ b/server/apps/memory-app/src/main/java/org/apache/james/MemoryJamesServerMain.java @@ -69,7 +69,6 @@ import org.apache.james.modules.server.UserIdentityModule; import org.apache.james.modules.server.VacationRoutesModule; import org.apache.james.modules.server.WebAdminMailOverWebModule; import org.apache.james.modules.server.WebAdminServerModule; -import org.apache.james.modules.server.oidc.OidcBackchannelLogoutRoutesModule; import org.apache.james.modules.vault.DeletedMessageVaultModule; import org.apache.james.modules.vault.DeletedMessageVaultRoutesModule; import org.apache.james.webadmin.WebAdminConfiguration; @@ -178,25 +177,15 @@ public class MemoryJamesServerMain implements JamesServerMain { .combineWith(new UsersRepositoryModuleChooser(new MemoryUsersRepositoryModule()) .chooseModules(configuration.getUsersRepositoryImplementation())) .combineWith(chooseJmapModule(configuration)) - .combineWith(chooseJmapOidcModules(configuration)) .combineWith(chooseDropListsModule(configuration)); } private static Module chooseJmapModule(MemoryJamesConfiguration configuration) { if (configuration.isJmapEnabled()) { - return new JMAPListenerModule(); - } - return binder -> { - - }; - } - - private static Module chooseJmapOidcModules(MemoryJamesConfiguration configuration) { - if (configuration.isJmapEnabled() && configuration.isJmapOidcEnabled()) { return Modules.combine( + new JMAPListenerModule(), new JMAPOidcModule(), - new CaffeineOidcTokenCacheModule(), - new OidcBackchannelLogoutRoutesModule()); + new CaffeineOidcTokenCacheModule()); } return Modules.EMPTY_MODULE; } diff --git a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesConfiguration.java b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesConfiguration.java index dea88c56e0..0071b37259 100644 --- a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesConfiguration.java +++ b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesConfiguration.java @@ -29,7 +29,6 @@ import org.apache.james.data.UsersRepositoryModuleChooser; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.filesystem.api.JamesDirectoriesProvider; import org.apache.james.jmap.JMAPModule; -import org.apache.james.jmap.oidc.JMAPOidcConfiguration; import org.apache.james.jmap.oidc.redis.OidcTokenCacheModuleChooser; import org.apache.james.modules.blobstore.BlobStoreConfiguration; import org.apache.james.server.core.JamesServerResourceLoader; @@ -77,7 +76,6 @@ public class PostgresJamesConfiguration implements Configuration { private Optional<EventBusImpl> eventBusImpl; private Optional<VaultConfiguration> deletedMessageVaultConfiguration; private Optional<Boolean> jmapEnabled; - private Optional<Boolean> jmapOidcEnabled; private Optional<OidcTokenCacheModuleChooser.Implementation> oidcTokenCacheImplementation; private Optional<Boolean> dropListsEnabled; private Optional<Boolean> rlsEnabled; @@ -91,7 +89,6 @@ public class PostgresJamesConfiguration implements Configuration { eventBusImpl = Optional.empty(); deletedMessageVaultConfiguration = Optional.empty(); jmapEnabled = Optional.empty(); - jmapOidcEnabled = Optional.empty(); oidcTokenCacheImplementation = Optional.empty(); dropListsEnabled = Optional.empty(); rlsEnabled = Optional.empty(); @@ -155,16 +152,6 @@ public class PostgresJamesConfiguration implements Configuration { return this; } - public Builder jmapOidcEnabled(Optional<Boolean> jmapOidcEnabled) { - this.jmapOidcEnabled = jmapOidcEnabled; - return this; - } - - public Builder enableJMAPOidc() { - this.jmapOidcEnabled = Optional.of(true); - return this; - } - public Builder oidcTokenCacheImplementation(OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation) { this.oidcTokenCacheImplementation = Optional.of(oidcTokenCacheImplementation); return this; @@ -227,18 +214,8 @@ public class PostgresJamesConfiguration implements Configuration { } }); - boolean jmapOidcEnabled = this.jmapOidcEnabled.orElseGet(() -> { - try { - return JMAPOidcConfiguration.parseConfiguration(propertiesProvider).getOidcEnabled(); - } catch (FileNotFoundException e) { - return false; - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } - }); - OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation = this.oidcTokenCacheImplementation.orElseGet(() -> { - if (jmapOidcEnabled) { + if (jmapEnabled) { return OidcTokenCacheModuleChooser.Implementation.from(propertiesProvider); } return OidcTokenCacheModuleChooser.Implementation.CAFFEINE; @@ -262,7 +239,6 @@ public class PostgresJamesConfiguration implements Configuration { eventBusImpl, deletedMessageVaultConfiguration, jmapEnabled, - jmapOidcEnabled, oidcTokenCacheImplementation, dropListsEnabled, rlsEnabled); @@ -291,7 +267,6 @@ public class PostgresJamesConfiguration implements Configuration { private final EventBusImpl eventBusImpl; private final VaultConfiguration deletedMessageVaultConfiguration; private final boolean jmapEnabled; - private final boolean jmapOidcEnabled; private final OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation; private final boolean dropListsEnabled; private final boolean rlsEnabled; @@ -304,7 +279,6 @@ public class PostgresJamesConfiguration implements Configuration { EventBusImpl eventBusImpl, VaultConfiguration deletedMessageVaultConfiguration, boolean jmapEnabled, - boolean jmapOidcEnabled, OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation, boolean dropListsEnabled, boolean rlsEnabled) { @@ -316,7 +290,6 @@ public class PostgresJamesConfiguration implements Configuration { this.eventBusImpl = eventBusImpl; this.deletedMessageVaultConfiguration = deletedMessageVaultConfiguration; this.jmapEnabled = jmapEnabled; - this.jmapOidcEnabled = jmapOidcEnabled; this.oidcTokenCacheImplementation = oidcTokenCacheImplementation; this.dropListsEnabled = dropListsEnabled; this.rlsEnabled = rlsEnabled; @@ -356,10 +329,6 @@ public class PostgresJamesConfiguration implements Configuration { return jmapEnabled; } - public boolean isJmapOidcEnabled() { - return jmapOidcEnabled; - } - public OidcTokenCacheModuleChooser.Implementation oidcTokenCacheImplementation() { return oidcTokenCacheImplementation; } diff --git a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java index 9e17ca2f61..0c4abb3655 100644 --- a/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java +++ b/server/apps/postgres-app/src/main/java/org/apache/james/PostgresJamesServerMain.java @@ -93,7 +93,6 @@ import org.apache.james.modules.server.TaskManagerModule; import org.apache.james.modules.server.UserIdentityModule; import org.apache.james.modules.server.WebAdminReIndexingTaskSerializationModule; import org.apache.james.modules.server.WebAdminServerModule; -import org.apache.james.modules.server.oidc.OidcBackchannelLogoutRoutesModule; import org.apache.james.modules.task.DistributedTaskManagerModule; import org.apache.james.modules.task.PostgresTaskExecutionDetailsProjectionGuiceModule; import org.apache.james.modules.vault.DeletedMessageVaultRoutesModule; @@ -200,7 +199,6 @@ public class PostgresJamesServerMain implements JamesServerMain { .combineWith(chooseBlobStoreModules(configuration)) .combineWith(chooseDeletedMessageVaultModules(configuration.getDeletedMessageVaultConfiguration())) .combineWith(chooseRLSSupportPostgresMailboxModule(configuration)) - .combineWith(chooseJmapOidcModules(configuration)) .overrideWith(chooseJmapModules(configuration)) .overrideWith(chooseTaskManagerModules(configuration)) .overrideWith(chooseDropListsModule(configuration)); @@ -263,20 +261,14 @@ public class PostgresJamesServerMain implements JamesServerMain { private static Module chooseJmapModules(PostgresJamesConfiguration configuration) { if (configuration.isJmapEnabled()) { if (configuration.eventBusImpl() == RABBITMQ) { - return Modules.combine(new JMAPEventBusModule(), new JMAPListenerModule()); + return Modules.combine(new JMAPEventBusModule(), new JMAPListenerModule(), + new JMAPOidcModule(), + OidcTokenCacheModuleChooser.chooseModules(configuration.oidcTokenCacheImplementation())); } - return new JMAPListenerModule(); - } - return binder -> { - }; - } - - private static Module chooseJmapOidcModules(PostgresJamesConfiguration configuration) { - if (configuration.isJmapEnabled() && configuration.isJmapOidcEnabled()) { return Modules.combine( + new JMAPListenerModule(), new JMAPOidcModule(), - OidcTokenCacheModuleChooser.chooseModules(configuration.oidcTokenCacheImplementation()), - new OidcBackchannelLogoutRoutesModule()); + OidcTokenCacheModuleChooser.chooseModules(configuration.oidcTokenCacheImplementation())); } return Modules.EMPTY_MODULE; } diff --git a/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/oidc/OidcBackchannelLogoutRoutesModule.java b/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/oidc/OidcBackchannelLogoutRoutesModule.java deleted file mode 100644 index a4e148d092..0000000000 --- a/server/container/guice/protocols/webadmin-jmap/src/main/java/org/apache/james/modules/server/oidc/OidcBackchannelLogoutRoutesModule.java +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you 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.apache.james.modules.server.oidc; - -import org.apache.james.webadmin.Routes; -import org.apache.james.webadmin.oidc.OidcBackchannelLogoutRoutes; - -import com.google.inject.AbstractModule; -import com.google.inject.multibindings.Multibinder; - -public class OidcBackchannelLogoutRoutesModule extends AbstractModule { - @Override - protected void configure() { - Multibinder<Routes> routesMultibinder = Multibinder.newSetBinder(binder(), Routes.class); - routesMultibinder.addBinding().to(OidcBackchannelLogoutRoutes.class); - } -} diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedOidcAuthenticationTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedOidcAuthenticationTest.java index 459c7c604e..342fe33646 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedOidcAuthenticationTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedOidcAuthenticationTest.java @@ -50,7 +50,7 @@ class DistributedOidcAuthenticationTest extends OidcAuthenticationContract { .deduplication() .noCryptoConfig()) .searchConfiguration(SearchConfiguration.openSearch()) - .enableJMAPOidc() + .enableJMAP() .oidcTokenCacheImplementation(REDIS) .build()) .extension(new DockerOpenSearchExtension()) diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryOidcAuthenticationTest.java b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryOidcAuthenticationTest.java index 951b66df6b..1ba2a50a7f 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryOidcAuthenticationTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/memory/MemoryOidcAuthenticationTest.java @@ -38,7 +38,7 @@ class MemoryOidcAuthenticationTest extends OidcAuthenticationContract { .workingDirectory(tmpDir) .configurationFromClasspath() .usersRepository(DEFAULT) - .enableJMAPOidc() + .enableJMAP() .build()) .server(configuration -> MemoryJamesServerMain.createServer(configuration) .overrideWith(new TestJMAPServerModule()) diff --git a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresOidcAuthenticationTest.java b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresOidcAuthenticationTest.java index e5fb9f42cd..e10b617dc9 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresOidcAuthenticationTest.java +++ b/server/protocols/jmap-rfc-8621-integration-tests/postgres-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/postgres/PostgresOidcAuthenticationTest.java @@ -22,6 +22,8 @@ package org.apache.james.jmap.rfc8621.postgres; import static org.apache.james.data.UsersRepositoryModuleChooser.Implementation.DEFAULT; import static org.apache.james.jmap.oidc.redis.OidcTokenCacheModuleChooser.Implementation.REDIS; +import java.util.Optional; + import org.apache.james.JamesServerBuilder; import org.apache.james.JamesServerExtension; import org.apache.james.PostgresJamesConfiguration; @@ -51,7 +53,7 @@ public class PostgresOidcAuthenticationTest extends OidcAuthenticationContract { .disableCache() .deduplication() .noCryptoConfig()) - .enableJMAPOidc() + .jmapEnabled(Optional.of(true)) .oidcTokenCacheImplementation(REDIS) .build()) .extension(PostgresExtension.empty()) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
