You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2012/07/12 13:05:03 UTC
svn commit: r1360626 - in /activemq/trunk:
activemq-web-demo/src/test/java/org/apache/activemq/web/
activemq-web/src/main/java/org/apache/activemq/web/
Author: dejanb
Date: Thu Jul 12 11:05:03 2012
New Revision: 1360626
URL: http://svn.apache.org/viewvc?rev=1360626&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3924 - connect REST API to secure broker
Modified:
activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java
activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java
activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java
Modified: activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java?rev=1360626&r1=1360625&r2=1360626&view=diff
==============================================================================
--- activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java (original)
+++ activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/JettyTestSupport.java Thu Jul 12 11:05:03 2012
@@ -83,11 +83,11 @@ public class JettyTestSupport extends Te
}
protected void tearDown() throws Exception {
+ session.close();
+ connection.close();
server.stop();
broker.stop();
broker.waitUntilStopped();
- session.close();
- connection.close();
}
public void waitForJettySocketToAccept(String bindLocation) throws Exception {
Modified: activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java?rev=1360626&r1=1360625&r2=1360626&view=diff
==============================================================================
--- activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java (original)
+++ activemq/trunk/activemq-web-demo/src/test/java/org/apache/activemq/web/RestTest.java Thu Jul 12 11:05:03 2012
@@ -178,4 +178,18 @@ public class RestTest extends JettyTestS
assertNotNull("Headers Exist", fields);
assertEquals("header value", "value", fields.getStringField("property"));
}
+
+ public void testAuth() throws Exception {
+ HttpClient httpClient = new HttpClient();
+ httpClient.start();
+ ContentExchange contentExchange = new ContentExchange();
+ httpClient.setConnectorType(HttpClient.CONNECTOR_SELECT_CHANNEL);
+ contentExchange.setMethod("POST");
+ contentExchange.setURL("http://localhost:8080/message/testPost?type=queue");
+ contentExchange.setRequestHeader("Authorization", "Basic YWRtaW46YWRtaW4=");
+ httpClient.send(contentExchange);
+
+ contentExchange.waitForDone();
+ assertTrue("success status", HttpStatus.isSuccess(contentExchange.getResponseStatus()));
+ }
}
Modified: activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java?rev=1360626&r1=1360625&r2=1360626&view=diff
==============================================================================
--- activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java (original)
+++ activemq/trunk/activemq-web/src/main/java/org/apache/activemq/web/WebClient.java Thu Jul 12 11:05:03 2012
@@ -89,6 +89,9 @@ public class WebClient implements HttpSe
private CamelContext camelContext;
private ProducerTemplate producerTemplate;
+ private String username;
+ private String password;
+
public WebClient() {
if (factory == null) {
throw new IllegalStateException("initContext(ServletContext) not called");
@@ -140,6 +143,22 @@ public class WebClient implements HttpSe
this.deliveryMode = deliveryMode;
}
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
public synchronized void closeConsumers() {
for (Iterator<MessageConsumer> it = consumers.values().iterator(); it.hasNext();) {
MessageConsumer consumer = it.next();
@@ -244,7 +263,7 @@ public class WebClient implements HttpSe
public Connection getConnection() throws JMSException {
if (connection == null) {
- connection = factory.createConnection();
+ connection = factory.createConnection(username, password);
connection.start();
}
return connection;
@@ -368,7 +387,21 @@ public class WebClient implements HttpSe
}
protected static WebClient createWebClient(HttpServletRequest request) {
- return new WebClient();
+ WebClient client = new WebClient();
+ String auth = request.getHeader("Authorization");
+ if (auth != null) {
+ String[] tokens = auth.split(" ");
+ if (tokens.length == 2) {
+ String encoded = tokens[1].trim();
+ String credentials = new String(javax.xml.bind.DatatypeConverter.parseBase64Binary(encoded));
+ String[] creds = credentials.split(":");
+ if (creds.length == 2) {
+ client.setUsername(creds[0]);
+ client.setPassword(creds[1]);
+ }
+ }
+ }
+ return client;
}
}