diff options
Diffstat (limited to 'java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java')
-rw-r--r-- | java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java index 5460c89eab..c13f63b44d 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java +++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java @@ -20,18 +20,26 @@ */ package org.apache.qpid.server.transport; -import static org.apache.qpid.transport.Connection.State.CLOSE_RCVD; - +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; +import javax.security.sasl.SaslException; +import javax.security.sasl.SaslServer; import org.apache.qpid.common.ServerPropertyNames; import org.apache.qpid.properties.ConnectionStartProperties; import org.apache.qpid.protocol.ProtocolEngine; import org.apache.qpid.server.configuration.BrokerConfig; import org.apache.qpid.server.protocol.AMQConnectionModel; -import org.apache.qpid.server.registry.ApplicationRegistry; import org.apache.qpid.server.registry.IApplicationRegistry; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.auth.AuthenticationResult; import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus; +import org.apache.qpid.server.security.auth.manager.AuthenticationManager; import org.apache.qpid.server.subscription.Subscription_0_10; import org.apache.qpid.server.virtualhost.State; import org.apache.qpid.server.virtualhost.VirtualHost; @@ -39,16 +47,7 @@ import org.apache.qpid.transport.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.security.sasl.SaslException; -import javax.security.sasl.SaslServer; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; +import static org.apache.qpid.transport.Connection.State.CLOSE_RCVD; public class ServerConnectionDelegate extends ServerDelegate { @@ -58,22 +57,25 @@ public class ServerConnectionDelegate extends ServerDelegate private final IApplicationRegistry _appRegistry; private int _maxNoOfChannels; private Map<String,Object> _clientProperties; + private final AuthenticationManager _authManager; - public ServerConnectionDelegate(IApplicationRegistry appRegistry, String localFQDN) + public ServerConnectionDelegate(IApplicationRegistry appRegistry, String localFQDN, AuthenticationManager authManager) { - this(createConnectionProperties(appRegistry.getBroker()), Collections.singletonList((Object)"en_US"), appRegistry, localFQDN); + this(createConnectionProperties(appRegistry.getBrokerConfig()), Collections.singletonList((Object)"en_US"), appRegistry, localFQDN, authManager); } - public ServerConnectionDelegate(Map<String, Object> properties, + private ServerConnectionDelegate(Map<String, Object> properties, List<Object> locales, IApplicationRegistry appRegistry, - String localFQDN) + String localFQDN, + AuthenticationManager authManager) { - super(properties, parseToList(appRegistry.getAuthenticationManager().getMechanisms()), locales); - + super(properties, parseToList(authManager.getMechanisms()), locales); + _appRegistry = appRegistry; _localFQDN = localFQDN; - _maxNoOfChannels = ApplicationRegistry.getInstance().getConfiguration().getMaxChannelCount(); + _maxNoOfChannels = appRegistry.getConfiguration().getMaxChannelCount(); + _authManager = authManager; } private static Map<String, Object> createConnectionProperties(final BrokerConfig brokerConfig) @@ -108,18 +110,17 @@ public class ServerConnectionDelegate extends ServerDelegate return ssn; } - protected SaslServer createSaslServer(String mechanism) throws SaslException + protected SaslServer createSaslServer(Connection conn, String mechanism) throws SaslException { - return _appRegistry.getAuthenticationManager().createSaslServer(mechanism, _localFQDN); + return _authManager.createSaslServer(mechanism, _localFQDN, ((ServerConnection) conn).getPeerPrincipal()); } protected void secure(final SaslServer ss, final Connection conn, final byte[] response) { - final AuthenticationResult authResult = _appRegistry.getAuthenticationManager().authenticate(ss, response); final ServerConnection sconn = (ServerConnection) conn; - - + final AuthenticationResult authResult = _authManager.authenticate(ss, response); + if (AuthenticationStatus.SUCCESS.equals(authResult.getStatus())) { tuneAuthorizedConnection(sconn); @@ -168,7 +169,7 @@ public class ServerConnectionDelegate extends ServerDelegate vhost = _appRegistry.getVirtualHostRegistry().getVirtualHost(vhostName); SecurityManager.setThreadSubject(sconn.getAuthorizedSubject()); - + if(vhost != null) { sconn.setVirtualHost(vhost); @@ -194,7 +195,7 @@ public class ServerConnectionDelegate extends ServerDelegate sconn.setState(Connection.State.CLOSING); sconn.invoke(new ConnectionClose(ConnectionCloseCode.INVALID_PATH, "Unknown virtualhost '"+vhostName+"'")); } - + } @Override @@ -216,7 +217,7 @@ public class ServerConnectionDelegate extends ServerDelegate setConnectionTuneOkChannelMax(sconn, okChannelMax); } - + @Override protected int getHeartbeatMax() { @@ -225,7 +226,7 @@ public class ServerConnectionDelegate extends ServerDelegate } @Override - protected int getChannelMax() + public int getChannelMax() { return _maxNoOfChannels; } @@ -265,7 +266,6 @@ public class ServerConnectionDelegate extends ServerDelegate if(isSessionNameUnique(atc.getName(), conn)) { super.sessionAttach(conn, atc); - ((ServerConnection)conn).checkForNotification(); } else { |