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 e3bbd0fa3dbcfe952ef63ef8e697bb87a5f95b23
Author: Quan Tran <[email protected]>
AuthorDate: Tue Jul 7 09:22:30 2026 +0700

    JAMES-4210 Move IMAP auth configuration out of Netty sessions
    
    Remove authentication and OIDC configuration from IMAPServer, ImapSession, 
and NettyImapSession; SASL configuration now belongs to the mechanism factory 
layer. Adapt default and Spring IMAP processor creation so JPA/Spring and tests 
still get proper default mechanisms.
---
 .../apache/james/imap/api/process/ImapSession.java | 24 --------
 .../apache/james/imap/encode/FakeImapSession.java  | 21 -------
 .../main/DefaultImapProcessorFactory.java          | 70 +++++++++++++++++++++-
 .../apache/james/imapserver/netty/IMAPServer.java  | 64 --------------------
 .../netty/ImapChannelUpstreamHandler.java          | 18 +-----
 .../james/imapserver/netty/NettyImapSession.java   | 32 +---------
 .../META-INF/spring/imapserver-context.xml         | 20 ++++---
 .../imapserver/netty/AbstractIMAPServerTest.java   |  3 +-
 8 files changed, 87 insertions(+), 165 deletions(-)

diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/api/process/ImapSession.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/api/process/ImapSession.java
index ebdce2fdba..791e8ce69a 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/api/process/ImapSession.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/api/process/ImapSession.java
@@ -31,7 +31,6 @@ import javax.net.ssl.SSLSession;
 import org.apache.commons.text.RandomStringGenerator;
 import org.apache.james.core.Username;
 import org.apache.james.imap.api.ImapSessionState;
-import org.apache.james.jwt.OidcSASLConfiguration;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.protocols.api.CommandDetectionSession;
 import org.apache.james.util.MDCBuilder;
@@ -247,19 +246,6 @@ public interface ImapSession extends 
CommandDetectionSession {
      */
     void popLineHandler();
 
-    /**
-     * Return true if SSL is required when Authenticating
-     */
-    boolean isSSLRequired();
-
-    /**
-     * Return true if the login / authentication via plain username / password 
is
-     * enabled
-     */
-    boolean isPlainAuthEnabled();
-
-    boolean supportsOAuth();
-
     default void withMDC(Runnable runnable) {
         try (Closeable c = mdc().build()) {
             runnable.run();
@@ -280,8 +266,6 @@ public interface ImapSession extends 
CommandDetectionSession {
      */
     InetSocketAddress getRemoteAddress();
 
-    Optional<OidcSASLConfiguration> oidcSaslConfiguration();
-
     default void setMailboxSession(MailboxSession mailboxSession) {
         setAttribute(MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY, mailboxSession);
     }
@@ -296,14 +280,6 @@ public interface ImapSession extends 
CommandDetectionSession {
             .orElse(null);
     }
 
-    default boolean isPlainAuthDisallowed() {
-        return !isPlainAuthEnabled() || 
isAuthenticatingNonEncryptedWhenRequiredSSL();
-    }
-
-    default boolean isAuthenticatingNonEncryptedWhenRequiredSSL() {
-        return isSSLRequired() && !isTLSActive();
-    }
-
     void schedule(Runnable runnable, Duration waitDelay);
 
 }
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/encode/FakeImapSession.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/encode/FakeImapSession.java
index d73af074e1..cd7ad58658 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/encode/FakeImapSession.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/encode/FakeImapSession.java
@@ -34,7 +34,6 @@ import org.apache.james.imap.api.ImapSessionState;
 import org.apache.james.imap.api.process.ImapLineHandler;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.api.process.SelectedMailbox;
-import org.apache.james.jwt.OidcSASLConfiguration;
 import org.apache.james.util.concurrent.NamedThreadFactory;
 
 import reactor.core.publisher.Mono;
@@ -166,31 +165,11 @@ public class FakeImapSession implements ImapSession {
         
     }
 
-    @Override
-    public boolean isSSLRequired() {
-        return false;
-    }
-
-    @Override
-    public boolean isPlainAuthEnabled() {
-        return true;
-    }
-
-    @Override
-    public boolean supportsOAuth() {
-        return false;
-    }
-
     @Override
     public InetSocketAddress getRemoteAddress() {
         return null;
     }
 
-    @Override
-    public Optional<OidcSASLConfiguration> oidcSaslConfiguration() {
-        return Optional.empty();
-    }
-
     @Override
     public boolean isTLSActive() {
         return false;
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/main/DefaultImapProcessorFactory.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/main/DefaultImapProcessorFactory.java
index 31415b99cf..6edd5724db 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/main/DefaultImapProcessorFactory.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/main/DefaultImapProcessorFactory.java
@@ -19,6 +19,9 @@
 
 package org.apache.james.imap.processor.main;
 
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.james.events.EventBus;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.DefaultMailboxTyper;
@@ -34,6 +37,17 @@ import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.metrics.api.MetricFactory;
+import org.apache.james.protocols.api.sasl.SaslMechanism;
+import org.apache.james.protocols.api.sasl.SaslMechanismFactory;
+import org.apache.james.protocols.sasl.BuiltInSaslMechanismFactories;
+import org.apache.james.protocols.sasl.JamesSaslAuthenticator;
+import org.apache.james.protocols.sasl.OauthBearerSaslMechanismFactory;
+import org.apache.james.protocols.sasl.PlainSaslMechanismFactory;
+import org.apache.james.protocols.sasl.XOauth2SaslMechanismFactory;
+import org.apache.james.protocols.sasl.plain.PlainSaslMechanism;
+
+import com.github.fge.lambdas.Throwing;
+import com.google.common.collect.ImmutableList;
 
 public class DefaultImapProcessorFactory {
 
@@ -59,6 +73,7 @@ public class DefaultImapProcessorFactory {
     }
 
     public static ImapProcessor createXListSupportingProcessor(MailboxManager 
mailboxManager,
+                                                               
JamesSaslAuthenticator saslAuthenticator,
                                                                EventBus 
eventBus, SubscriptionManager subscriptionManager,
                                                                MailboxTyper 
mailboxTyper, QuotaManager quotaManager,
                                                                
QuotaRootResolver quotaRootResolver, MetricFactory metricFactory) {
@@ -69,7 +84,60 @@ public class DefaultImapProcessorFactory {
         return 
DefaultProcessor.createDefaultProcessor(unknownRequestImapProcessor, 
mailboxManager,
             eventBus, subscriptionManager, statusResponseFactory, 
mailboxTyper, quotaManager, quotaRootResolver,
             MailboxCounterCorrector.DEFAULT, metricFactory,
-            FetchProcessor.LocalCacheConfiguration.DEFAULT);
+            FetchProcessor.LocalCacheConfiguration.DEFAULT, 
ImmutableList.of(new PlainSaslMechanism()), saslAuthenticator);
+    }
+
+    public static ImapProcessor createXListSupportingProcessor(MailboxManager 
mailboxManager,
+                                                               EventBus 
eventBus, SubscriptionManager subscriptionManager,
+                                                               MailboxTyper 
mailboxTyper, QuotaManager quotaManager,
+                                                               
QuotaRootResolver quotaRootResolver, MetricFactory metricFactory,
+                                                               
FetchProcessor.LocalCacheConfiguration localCacheConfiguration,
+                                                               
HierarchicalConfiguration<ImmutableNode> serverConfiguration) throws 
ConfigurationException {
+
+        StatusResponseFactory statusResponseFactory = new 
UnpooledStatusResponseFactory();
+        UnknownRequestProcessor unknownRequestImapProcessor = new 
UnknownRequestProcessor(statusResponseFactory);
+
+        return 
DefaultProcessor.createDefaultProcessor(unknownRequestImapProcessor, 
mailboxManager,
+            eventBus, subscriptionManager, statusResponseFactory, 
mailboxTyper, quotaManager, quotaRootResolver,
+            MailboxCounterCorrector.DEFAULT, metricFactory,
+            localCacheConfiguration, 
defaultSaslMechanisms(serverConfiguration));
+    }
+
+    public static ImapProcessor createXListSupportingProcessor(MailboxManager 
mailboxManager,
+                                                               EventBus 
eventBus, SubscriptionManager subscriptionManager,
+                                                               MailboxTyper 
mailboxTyper, QuotaManager quotaManager,
+                                                               
QuotaRootResolver quotaRootResolver, MetricFactory metricFactory,
+                                                               
FetchProcessor.LocalCacheConfiguration localCacheConfiguration,
+                                                               
HierarchicalConfiguration<ImmutableNode> serverConfiguration,
+                                                               
JamesSaslAuthenticator saslAuthenticator) throws ConfigurationException {
+
+        StatusResponseFactory statusResponseFactory = new 
UnpooledStatusResponseFactory();
+        UnknownRequestProcessor unknownRequestImapProcessor = new 
UnknownRequestProcessor(statusResponseFactory);
+
+        return 
DefaultProcessor.createDefaultProcessor(unknownRequestImapProcessor, 
mailboxManager,
+            eventBus, subscriptionManager, statusResponseFactory, 
mailboxTyper, quotaManager, quotaRootResolver,
+            MailboxCounterCorrector.DEFAULT, metricFactory,
+            localCacheConfiguration, 
defaultSaslMechanisms(serverConfiguration), saslAuthenticator);
+    }
+
+    private static ImmutableList<SaslMechanism> 
defaultSaslMechanisms(HierarchicalConfiguration<ImmutableNode> 
serverConfiguration) throws ConfigurationException {
+        ImmutableList<SaslMechanismFactory> factories = 
BuiltInSaslMechanismFactories.enabledForServer(
+            ImmutableList.of(
+                new PlainSaslMechanismFactory(),
+                new OauthBearerSaslMechanismFactory(),
+                new XOauth2SaslMechanismFactory()),
+            serverConfiguration);
+
+        try {
+            return factories.stream()
+                .map(Throwing.function(factory -> 
factory.create(serverConfiguration)))
+                .collect(ImmutableList.toImmutableList());
+        } catch (RuntimeException e) {
+            if (e.getCause() instanceof ConfigurationException 
configurationException) {
+                throw configurationException;
+            }
+            throw e;
+        }
     }
 
 }
diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
index d0b43c0ff0..9d4cdc492f 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/IMAPServer.java
@@ -21,9 +21,7 @@ package org.apache.james.imapserver.netty;
 import static 
org.apache.james.imapserver.netty.HAProxyMessageHandler.PROXY_INFO;
 
 import java.net.InetSocketAddress;
-import java.net.MalformedURLException;
 import java.net.SocketAddress;
-import java.net.URISyntaxException;
 import java.time.Clock;
 import java.time.Duration;
 import java.time.Instant;
@@ -50,7 +48,6 @@ import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.api.process.SelectedMailbox;
 import org.apache.james.imap.decode.ImapDecoder;
 import org.apache.james.imap.encode.ImapEncoder;
-import org.apache.james.jwt.OidcSASLConfiguration;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.metrics.api.GaugeRegistry;
@@ -94,64 +91,6 @@ public class IMAPServer extends 
AbstractConfigurableAsyncServer implements ImapC
     private static final Logger LOG = 
LoggerFactory.getLogger(IMAPServer.class);
     public static final AttributeKey<Instant> CONNECTION_DATE = 
AttributeKey.newInstance("connectionDate");
 
-    public static class AuthenticationConfiguration {
-        private static final boolean PLAIN_AUTH_DISALLOWED_DEFAULT = true;
-        private static final boolean PLAIN_AUTH_ENABLED_DEFAULT = true;
-        private static final String OIDC_PATH = "auth.oidc";
-
-        public static AuthenticationConfiguration 
parse(HierarchicalConfiguration<ImmutableNode> configuration) throws 
ConfigurationException {
-            boolean isRequireSSL = configuration.getBoolean("auth.requireSSL", 
fallback(configuration));
-            boolean isPlainAuthEnabled = 
configuration.getBoolean("auth.plainAuthEnabled", PLAIN_AUTH_ENABLED_DEFAULT);
-
-            if (configuration.immutableConfigurationsAt(OIDC_PATH).isEmpty()) {
-                return new AuthenticationConfiguration(
-                    isRequireSSL,
-                    isPlainAuthEnabled);
-            } else {
-                try {
-                    return new AuthenticationConfiguration(
-                        isRequireSSL,
-                        isPlainAuthEnabled,
-                        
OidcSASLConfiguration.parse(configuration.configurationAt(OIDC_PATH)));
-                } catch (MalformedURLException | NullPointerException | 
URISyntaxException exception) {
-                    throw new ConfigurationException("Failed to retrieve oauth 
component", exception);
-                }
-            }
-        }
-
-        private static boolean 
fallback(HierarchicalConfiguration<ImmutableNode> configuration) {
-            return configuration.getBoolean("plainAuthDisallowed", 
PLAIN_AUTH_DISALLOWED_DEFAULT);
-        }
-
-        private final boolean isSSLRequired;
-        private final boolean plainAuthEnabled;
-        private final Optional<OidcSASLConfiguration> oidcSASLConfiguration;
-
-        public AuthenticationConfiguration(boolean isSSLRequired, boolean 
plainAuthEnabled) {
-            this.isSSLRequired = isSSLRequired;
-            this.plainAuthEnabled = plainAuthEnabled;
-            this.oidcSASLConfiguration = Optional.empty();
-        }
-
-        public AuthenticationConfiguration(boolean isSSLRequired, boolean 
plainAuthEnabled, OidcSASLConfiguration oidcSASLConfiguration) {
-            this.isSSLRequired = isSSLRequired;
-            this.plainAuthEnabled = plainAuthEnabled;
-            this.oidcSASLConfiguration = Optional.of(oidcSASLConfiguration);
-        }
-
-        public boolean isSSLRequired() {
-            return isSSLRequired;
-        }
-
-        public boolean isPlainAuthEnabled() {
-            return plainAuthEnabled;
-        }
-
-        public Optional<OidcSASLConfiguration> getOidcSASLConfiguration() {
-            return oidcSASLConfiguration;
-        }
-    }
-
     private static final String SOFTWARE_TYPE = "JAMES " + VERSION + " Server 
";
     private static final String DEFAULT_TIME_UNIT = "SECONDS";
     private static final String CAPABILITY_SEPARATOR = "|";
@@ -174,7 +113,6 @@ public class IMAPServer extends 
AbstractConfigurableAsyncServer implements ImapC
     private int inMemorySizeLimit;
     private int timeout;
     private int literalSizeLimit;
-    private AuthenticationConfiguration authenticationConfiguration;
     private Optional<TrafficShapingConfiguration> trafficShaping = 
Optional.empty();
     private Optional<ConnectionLimitUpstreamHandler> 
connectionLimitUpstreamHandler = Optional.empty();
     private Optional<ConnectionPerIpLimitUpstreamHandler> 
connectionPerIpLimitUpstreamHandler = Optional.empty();
@@ -212,7 +150,6 @@ public class IMAPServer extends 
AbstractConfigurableAsyncServer implements ImapC
         if (timeout < DEFAULT_TIMEOUT) {
             throw new ConfigurationException("Minimum timeout of 30 minutes 
required. See rfc2060 5.4 for details");
         }
-        authenticationConfiguration = 
AuthenticationConfiguration.parse(configuration);
         connectionLimitUpstreamHandler = 
ConnectionLimitUpstreamHandler.forCount(connectionLimit);
         connectionPerIpLimitUpstreamHandler = 
ConnectionPerIpLimitUpstreamHandler.forCount(connPerIP);
         ignoreIDLEUponProcessing = 
configuration.getBoolean("ignoreIDLEUponProcessing", true);
@@ -368,7 +305,6 @@ public class IMAPServer extends 
AbstractConfigurableAsyncServer implements ImapC
             .processor(processor)
             .encoder(encoder)
             .compress(compress)
-            .authenticationConfiguration(authenticationConfiguration)
             .connectionChecks(connectionChecks)
             .secure(secure)
             .imapMetrics(imapMetrics)
diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
index 0af14212a6..800fecc6a8 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapChannelUpstreamHandler.java
@@ -19,7 +19,6 @@
 package org.apache.james.imapserver.netty;
 
 import static org.apache.james.imap.api.process.ImapSession.MDC_KEY;
-import static 
org.apache.james.imapserver.netty.IMAPServer.AuthenticationConfiguration;
 
 import java.io.Closeable;
 import java.io.IOException;
@@ -88,7 +87,6 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
         private boolean compress;
         private ImapProcessor processor;
         private ImapEncoder encoder;
-        private IMAPServer.AuthenticationConfiguration 
authenticationConfiguration;
         private ImapMetrics imapMetrics;
         private boolean ignoreIDLEUponProcessing;
         private Duration heartbeatInterval;
@@ -127,11 +125,6 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
             return this;
         }
 
-        public ImapChannelUpstreamHandlerBuilder 
authenticationConfiguration(IMAPServer.AuthenticationConfiguration 
authenticationConfiguration) {
-            this.authenticationConfiguration = authenticationConfiguration;
-            return this;
-        }
-
         public ImapChannelUpstreamHandlerBuilder 
connectionChecks(Set<ConnectionCheck> connectionChecks) {
             this.connectionChecks = connectionChecks;
             return this;
@@ -163,7 +156,7 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
         }
 
         public ImapChannelUpstreamHandler build() {
-            return new ImapChannelUpstreamHandler(hello, processor, encoder, 
compress, secure, imapMetrics, authenticationConfiguration, 
ignoreIDLEUponProcessing, (int) heartbeatInterval.toSeconds(), 
reactiveThrottler, connectionChecks, proxyRequired, imapChannelGroup);
+            return new ImapChannelUpstreamHandler(hello, processor, encoder, 
compress, secure, imapMetrics, ignoreIDLEUponProcessing, (int) 
heartbeatInterval.toSeconds(), reactiveThrottler, connectionChecks, 
proxyRequired, imapChannelGroup);
         }
     }
 
@@ -182,7 +175,6 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
     private final ImapProcessor processor;
     private final ImapEncoder encoder;
     private final ImapHeartbeatHandler heartbeatHandler;
-    private final AuthenticationConfiguration authenticationConfiguration;
     private final Metric imapConnectionsMetric;
     private final Metric imapCommandsMetric;
     private final boolean ignoreIDLEUponProcessing;
@@ -192,15 +184,13 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
     private final ChannelGroup imapChannelGroup;
 
     public ImapChannelUpstreamHandler(String hello, ImapProcessor processor, 
ImapEncoder encoder, boolean compress,
-                                      Encryption secure, ImapMetrics 
imapMetrics, AuthenticationConfiguration authenticationConfiguration,
-                                      boolean ignoreIDLEUponProcessing, int 
heartbeatIntervalSeconds, ReactiveThrottler reactiveThrottler,
+                                      Encryption secure, ImapMetrics 
imapMetrics, boolean ignoreIDLEUponProcessing, int heartbeatIntervalSeconds, 
ReactiveThrottler reactiveThrottler,
                                       Set<ConnectionCheck> connectionChecks, 
boolean proxyRequired, ChannelGroup imapChannelGroup) {
         this.hello = hello;
         this.processor = processor;
         this.encoder = encoder;
         this.secure = secure;
         this.compress = compress;
-        this.authenticationConfiguration = authenticationConfiguration;
         this.imapConnectionsMetric = imapMetrics.getConnectionsMetric();
         this.imapCommandsMetric = imapMetrics.getCommandsMetric();
         this.ignoreIDLEUponProcessing = ignoreIDLEUponProcessing;
@@ -215,9 +205,7 @@ public class ImapChannelUpstreamHandler extends 
ChannelInboundHandlerAdapter imp
     public void channelActive(ChannelHandlerContext ctx) {
         imapChannelGroup.add(ctx.channel());
         SessionId sessionId = SessionId.generate();
-        ImapSession imapsession = new NettyImapSession(ctx.channel(), secure, 
compress, authenticationConfiguration.isSSLRequired(),
-            authenticationConfiguration.isPlainAuthEnabled(), sessionId,
-            authenticationConfiguration.getOidcSASLConfiguration());
+        ImapSession imapsession = new NettyImapSession(ctx.channel(), secure, 
compress, sessionId);
         ctx.channel().attr(IMAP_SESSION_ATTRIBUTE_KEY).set(imapsession);
         ctx.channel().attr(REQUEST_COUNTER).set(new AtomicLong());
         ctx.channel().attr(LINEARIZER_ATTRIBUTE_KEY).set(new 
ImapLinerarizer());
diff --git 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java
 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java
index 9a10733e64..866ea6d579 100644
--- 
a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java
+++ 
b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/NettyImapSession.java
@@ -39,7 +39,6 @@ import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.api.process.SelectedMailbox;
 import org.apache.james.imap.encode.ImapResponseWriter;
 import org.apache.james.imap.message.Literal;
-import org.apache.james.jwt.OidcSASLConfiguration;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.protocols.netty.Encryption;
 import org.apache.james.protocols.netty.LineHandlerAware;
@@ -61,28 +60,19 @@ public class NettyImapSession implements ImapSession, 
NettyConstants {
     private final Encryption secure;
     private final boolean compress;
     private final Channel channel;
-    private final boolean requiredSSL;
-    private final boolean plainAuthEnabled;
     private final SessionId sessionId;
-    private final boolean supportsOAuth;
-    private final Optional<OidcSASLConfiguration> oidcSASLConfiguration;
 
     private volatile ImapSessionState state = 
ImapSessionState.NON_AUTHENTICATED;
     private final AtomicReference<SelectedMailbox> selectedMailbox = new 
AtomicReference<>();
     private volatile boolean needsCommandInjectionDetection;
     private volatile MailboxSession mailboxSession = null;
 
-    public NettyImapSession(Channel channel, Encryption secure, boolean 
compress, boolean requiredSSL, boolean plainAuthEnabled, SessionId sessionId,
-                            Optional<OidcSASLConfiguration> 
oidcSASLConfiguration) {
+    public NettyImapSession(Channel channel, Encryption secure, boolean 
compress, SessionId sessionId) {
         this.channel = channel;
         this.secure = secure;
         this.compress = compress;
-        this.requiredSSL = requiredSSL;
-        this.plainAuthEnabled = plainAuthEnabled;
         this.sessionId = sessionId;
         this.needsCommandInjectionDetection = true;
-        this.oidcSASLConfiguration = oidcSASLConfiguration;
-        this.supportsOAuth = oidcSASLConfiguration.isPresent();
     }
 
     @Override
@@ -311,31 +301,11 @@ public class NettyImapSession implements ImapSession, 
NettyConstants {
         handler.popLineHandler();
     }
 
-    @Override
-    public boolean isSSLRequired() {
-        return requiredSSL;
-    }
-
-    @Override
-    public boolean isPlainAuthEnabled() {
-        return plainAuthEnabled;
-    }
-
-    @Override
-    public boolean supportsOAuth() {
-        return supportsOAuth;
-    }
-
     @Override
     public InetSocketAddress getRemoteAddress() {
         return (InetSocketAddress) channel.remoteAddress();
     }
 
-    @Override
-    public Optional<OidcSASLConfiguration> oidcSaslConfiguration() {
-        return oidcSASLConfiguration;
-    }
-
     @Override
     public boolean isTLSActive() {
         return channel.pipeline().get(SSL_HANDLER) != null;
diff --git 
a/server/protocols/protocols-imap4/src/main/resources/META-INF/spring/imapserver-context.xml
 
b/server/protocols/protocols-imap4/src/main/resources/META-INF/spring/imapserver-context.xml
index 117f0baaa8..2d3e4e5184 100644
--- 
a/server/protocols/protocols-imap4/src/main/resources/META-INF/spring/imapserver-context.xml
+++ 
b/server/protocols/protocols-imap4/src/main/resources/META-INF/spring/imapserver-context.xml
@@ -29,17 +29,21 @@
         <constructor-arg index="6" ref="connectionCheckFactory" />
     </bean>
 
-    <!-- The imapProcessor configuration will be reviewed when IMAP will be 
integrated into Protocols project -->
-    <!-- Temporary configuration - see IMAP-357 -->
     <bean id="imapProcessor" 
class="org.apache.james.imap.processor.main.DefaultImapProcessorFactory"
           factory-method="createXListSupportingProcessor">
         <constructor-arg index="0" ref="mailboxmanager"/>
-        <constructor-arg index="1" ref="event-bus"/>
-        <constructor-arg index="2" ref="subscriptionManager"/>
-        <constructor-arg index="3" ref="mailboxTyper"/>
-        <constructor-arg index="4" ref="quotaManager"/>
-        <constructor-arg index="5" ref="quotaRootResolver"/>
-        <constructor-arg index="6" ref="timeMetricFactory"/>
+        <constructor-arg index="1" ref="jamesSaslAuthenticator"/>
+        <constructor-arg index="2" ref="event-bus"/>
+        <constructor-arg index="3" ref="subscriptionManager"/>
+        <constructor-arg index="4" ref="mailboxTyper"/>
+        <constructor-arg index="5" ref="quotaManager"/>
+        <constructor-arg index="6" ref="quotaRootResolver"/>
+        <constructor-arg index="7" ref="timeMetricFactory"/>
+    </bean>
+
+    <bean id="jamesSaslAuthenticator" 
class="org.apache.james.protocols.sasl.JamesSaslAuthenticator">
+        <constructor-arg index="0" ref="authenticator"/>
+        <constructor-arg index="1" ref="authorizator"/>
     </bean>
 
     <bean id="mailboxTyper" 
class="org.apache.james.imap.api.process.DefaultMailboxTyper"/>
diff --git 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/AbstractIMAPServerTest.java
 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/AbstractIMAPServerTest.java
index 7eb0eb22cc..a4c6471f4c 100644
--- 
a/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/AbstractIMAPServerTest.java
+++ 
b/server/protocols/protocols-imap4/src/test/java/org/apache/james/imapserver/netty/AbstractIMAPServerTest.java
@@ -120,7 +120,8 @@ abstract class AbstractIMAPServerTest {
                 memoryIntegrationResources.getQuotaManager(),
                 memoryIntegrationResources.getQuotaRootResolver(),
                 metricFactory,
-                localCacheConfiguration),
+                localCacheConfiguration,
+                config),
             new ImapMetrics(metricFactory),
             new NoopGaugeRegistry(), connectionChecks);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to