diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2009-02-09 05:14:09 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2009-02-09 05:14:09 +0000 |
commit | db5ee3f13d26890077fc5028d59344d496f99388 (patch) | |
tree | 3586bc35a0668b966448cae4aaf4228bce20beea | |
parent | 217b24c7e05ac60981d3e2e7c45f3ac27674d36f (diff) | |
download | qpid-python-db5ee3f13d26890077fc5028d59344d496f99388.tar.gz |
This is related to QPID-1645
Added support to specify the sasl_mechs as a space separated list in the connection URL.
By default it will use PLAIN.
You could provide a list of mechs to support or force to use one GASSAPI or CRAM-MD5 by specifying only that in the connection URL.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@742267 13f79535-47bb-0310-9956-ffa450edef68
4 files changed, 21 insertions, 6 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java index c00d983902..7227ab247c 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/BrokerDetails.java @@ -35,6 +35,7 @@ public interface BrokerDetails public static final String OPTIONS_CONNECT_TIMEOUT = "connecttimeout"; public static final String OPTIONS_CONNECT_DELAY = "connectdelay"; public static final String OPTIONS_IDLE_TIMEOUT = "idle_timeout"; + public static final String OPTIONS_SASL_MECHS = "sasl_mechs"; public static final int DEFAULT_PORT = 5672; public static final String SOCKET = "socket"; diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java index 993da168a9..359dfc8c11 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java @@ -46,12 +46,21 @@ public class ClientDelegate extends ConnectionDelegate private String vhost; private String username; private String password; - - public ClientDelegate(String vhost, String username, String password) + private String[] saslMechs; + private String protocol; + private String serverName; + + public ClientDelegate(String vhost, String username, String password,String saslMechs) { this.vhost = vhost; this.username = username; this.password = password; + this.saslMechs = saslMechs.split(" "); + + // Looks kinda of silly but the Sun SASL Kerberos client uses the + // protocol + servername as the service key. + this.protocol = System.getProperty("qpid.sasl_protocol","AMQP"); + this.serverName = System.getProperty("qpid.sasl_server_name","localhost"); } public void init(Connection conn, ProtocolHeader hdr) @@ -84,7 +93,7 @@ public class ClientDelegate extends ConnectionDelegate new UsernamePasswordCallbackHandler(); handler.initialise(username, password); SaslClient sc = Sasl.createSaslClient - (new String[] {"PLAIN"}, null, "AMQP", "localhost", null, handler); + (saslMechs, null, protocol, serverName, null, handler); conn.setSaslClient(sc); byte[] response = sc.hasInitialResponse() ? diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java index 2f7e1490ab..adaf2ccd37 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java +++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java @@ -161,14 +161,19 @@ public class Connection extends ConnectionInvoker { connect(host, port, vhost, username, password, false); } - + public void connect(String host, int port, String vhost, String username, String password, boolean ssl) { + connect(host, port, vhost, username, password, false,"PLAIN"); + } + + public void connect(String host, int port, String vhost, String username, String password, boolean ssl,String saslMechs) + { synchronized (lock) { state = OPENING; - delegate = new ClientDelegate(vhost, username, password); + delegate = new ClientDelegate(vhost, username, password,saslMechs); IoTransport.connect(host, port, ConnectionBinding.get(this), ssl); send(new ProtocolHeader(1, 0, 10)); diff --git a/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java b/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java index 9ead0c19f2..2390516ef0 100644 --- a/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java +++ b/qpid/java/tools/src/main/java/org/apache/qpid/tools/JNDICheck.java @@ -187,7 +187,7 @@ public class JNDICheck print("ConnectionURL:"); print(factory.getConnectionURL().toString()); print("FailoverPolicy"); - print(new FailoverPolicy(factory.getConnectionURL()).toString()); + print(new FailoverPolicy(factory.getConnectionURL(),null).toString()); print(""); } } |