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]

Reply via email to