You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/08/05 10:45:13 UTC
svn commit: r1755283 - in /qpid/java/trunk:
broker-core/src/main/java/org/apache/qpid/server/model/
broker-core/src/main/java/org/apache/qpid/server/model/port/
broker-core/src/main/java/org/apache/qpid/server/virtualhost/
broker-core/src/test/java/org...
Author: rgodfrey
Date: Fri Aug 5 10:45:12 2016
New Revision: 1755283
URL: http://svn.apache.org/viewvc?rev=1755283&view=rev
Log:
QPID-7380 : Managed Operations returning potentially confidential information should not be permitted by default on insecure connections
Modified:
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerAttributeInjector.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectInjectedOperation.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectMethodOperation.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectOperation.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java
qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java
qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerAttributeInjector.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerAttributeInjector.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerAttributeInjector.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/BrokerAttributeInjector.java Fri Aug 5 10:45:12 2016
@@ -259,7 +259,7 @@ public class BrokerAttributeInjector imp
"dumpHeap",
"Dumps the heap to the outputFile file in the same format as the hprof heap dump.",
true,
- params,
+ false, params,
method,
new Object[]{_hotSpotDiagnosticMXBean, heapDumpMethod},
_typeValidator);
@@ -289,7 +289,7 @@ public class BrokerAttributeInjector imp
"setJVMOptions",
"Sets given JVM options",
true,
- params,
+ false, params,
method,
new Object[]{_hotSpotDiagnosticMXBean, setVMOptionMethod},
_typeValidator);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectInjectedOperation.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectInjectedOperation.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectInjectedOperation.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectInjectedOperation.java Fri Aug 5 10:45:12 2016
@@ -43,11 +43,13 @@ public class ConfiguredObjectInjectedOpe
private final String _name;
private final String _description;
private final boolean _nonModifying;
+ private final boolean _secure;
private final Object[] _staticParams;
public ConfiguredObjectInjectedOperation(final String name,
final String description,
final boolean nonModifying,
+ final boolean secure,
final OperationParameter[] parameters,
final Method operation,
final Object[] staticParams,
@@ -57,6 +59,7 @@ public class ConfiguredObjectInjectedOpe
_name = name;
_description = description;
_nonModifying = nonModifying;
+ _secure = secure;
_validator = validator;
_staticParams = staticParams == null ? new Object[0] : staticParams;
@@ -246,6 +249,13 @@ public class ConfiguredObjectInjectedOpe
}
@Override
+ public boolean isSecure()
+ {
+ return _secure;
+ }
+
+
+ @Override
public Type getGenericReturnType()
{
return _operation.getGenericReturnType();
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectMethodOperation.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectMethodOperation.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectMethodOperation.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectMethodOperation.java Fri Aug 5 10:45:12 2016
@@ -221,6 +221,13 @@ public class ConfiguredObjectMethodOpera
}
@Override
+ public boolean isSecure()
+ {
+ return _operation.getAnnotation(ManagedOperation.class).secure();
+ }
+
+
+ @Override
public Type getGenericReturnType()
{
return _operation.getGenericReturnType();
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectOperation.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectOperation.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectOperation.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectOperation.java Fri Aug 5 10:45:12 2016
@@ -41,4 +41,6 @@ public interface ConfiguredObjectOperati
boolean isNonModifying();
Type getGenericReturnType();
+
+ boolean isSecure();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/ManagedOperation.java Fri Aug 5 10:45:12 2016
@@ -31,4 +31,6 @@ public @interface ManagedOperation
{
String description() default "";
boolean nonModifying() default false;
+ boolean secure() default false;
+
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java Fri Aug 5 10:45:12 2016
@@ -294,13 +294,13 @@ public interface Queue<X extends Queue<X
@ManagedOperation
long clearQueue();
- @ManagedOperation(nonModifying = true)
+ @ManagedOperation(nonModifying = true, secure = true)
Content getMessageContent(@Param(name = "messageId") long messageId);
- @ManagedOperation(nonModifying = true)
+ @ManagedOperation(nonModifying = true, secure = true)
List<MessageInfo> getMessageInfo(@Param(name = "first", defaultValue = "-1") int first, @Param(name = "last", defaultValue = "-1") int last);
- @ManagedOperation(nonModifying = true)
+ @ManagedOperation(nonModifying = true, secure = true)
MessageInfo getMessageInfoById(@Param(name = "messageId") long messageId);
boolean isExclusive();
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Fri Aug 5 10:45:12 2016
@@ -195,18 +195,18 @@ public interface VirtualHost<X extends V
@ManagedOperation(nonModifying = true)
Connection<?> getConnection(@Param(name="name") String name);
- @ManagedOperation
+ @ManagedOperation(secure = true)
int publishMessage(@Param(name = "message")ManageableMessage message);
- @ManagedOperation(nonModifying = true, description = "Extract configuration")
+ @ManagedOperation(nonModifying = true, description = "Extract configuration", secure = true)
Map<String,Object> extractConfig(@Param(name="includeSecureAttributes",
description = "include attributes that may contain passwords or other "
+ "confidential information",
defaultValue = "false") boolean includeSecureAttributes);
- @ManagedOperation(nonModifying = true, description = "Extract message store content")
+ @ManagedOperation(nonModifying = true, description = "Extract message store content", secure = true)
Content extractMessageStore();
- @ManagedOperation(description = "Import message store content")
+ @ManagedOperation(description = "Import message store content", secure = true)
void importMessageStore(@Param(name="source", description = "Extract file")String source);
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPort.java Fri Aug 5 10:45:12 2016
@@ -89,4 +89,7 @@ public interface HttpPort<X extends Http
@ManagedContextDefault( name = PORT_HTTP_MAXIMUM_QUEUED_REQUESTS )
long DEFAULT_PORT_HTTP_MAXIMUM_QUEUED_REQUESTS = 1000;
+ @ManagedAttribute( defaultValue = "false", description = "If true allow operations which may return confidential "
+ + "information to be executed on insecure connections")
+ boolean isAllowConfidentialOperationsOnInsecureChannels();
}
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/port/HttpPortImpl.java Fri Aug 5 10:45:12 2016
@@ -47,6 +47,9 @@ public class HttpPortImpl extends Abstra
@ManagedAttributeField
private int _threadPoolMinimum;
+ @ManagedAttributeField
+ private boolean _allowConfidentialOperationsOnInsecureChannels;
+
@ManagedObjectFactoryConstructor
public HttpPortImpl(final Map<String, Object> attributes,
final Container<?> container)
@@ -79,6 +82,12 @@ public class HttpPortImpl extends Abstra
}
@Override
+ public boolean isAllowConfidentialOperationsOnInsecureChannels()
+ {
+ return _allowConfidentialOperationsOnInsecureChannels;
+ }
+
+ @Override
protected State onActivate()
{
if(_portManager != null && _portManager.isActivationAllowed(this))
Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Fri Aug 5 10:45:12 2016
@@ -844,7 +844,7 @@ public abstract class AbstractVirtualHos
}
else
{
- throw new IllegalStateException("The extractMessageStore operation can only be called when the virtual host is stopped");
+ throw new IllegalArgumentException("The extractMessageStore operation can only be called when the virtual host is stopped");
}
}
Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java Fri Aug 5 10:45:12 2016
@@ -370,7 +370,9 @@ public class InjectedAttributeTest exten
final OperationParameter[] params = new OperationParameter[1];
params[0] = new OperationParameterFromInjection("height", Integer.TYPE, Integer.TYPE, "", "", new String[0]);
final ConfiguredObjectInjectedOperation<?> operationInjector =
- new ConfiguredObjectInjectedOperation<TestCar<?>>("fly", "", true, params, method, null, validator);
+ new ConfiguredObjectInjectedOperation<TestCar<?>>("fly", "", true,
+ false,
+ params, method, null, validator);
TestModel model = new TestModel(null, new TestInjector(operationInjector));
@@ -410,9 +412,13 @@ public class InjectedAttributeTest exten
params[0] = new OperationParameterFromInjection("count", Integer.TYPE, Integer.TYPE, "", "", new String[0]);
final ConfiguredObjectInjectedOperation<?> hello =
- new ConfiguredObjectInjectedOperation<TestCar<?>>("sayHello", "", true, params, method, new String[] { "Hello"}, validator);
+ new ConfiguredObjectInjectedOperation<TestCar<?>>("sayHello", "", true,
+ false,
+ params, method, new String[] { "Hello"}, validator);
final ConfiguredObjectInjectedOperation<?> goodbye =
- new ConfiguredObjectInjectedOperation<TestCar<?>>("sayGoodbye", "", true, params, method, new String[] { "Goodbye"}, validator);
+ new ConfiguredObjectInjectedOperation<TestCar<?>>("sayGoodbye", "", true,
+ false,
+ params, method, new String[] { "Goodbye"}, validator);
TestModel model = new TestModel(null, new TestInjector(hello, goodbye));
Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1755283&r1=1755282&r2=1755283&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Fri Aug 5 10:45:12 2016
@@ -51,6 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.management.plugin.HttpManagement;
import org.apache.qpid.server.model.AbstractConfiguredObject;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
@@ -732,6 +733,14 @@ public class RestServlet extends Abstrac
"No such operation: " + operationName);
return;
}
+ else if(operation.isSecure() && !(request.isSecure() || HttpManagement.getPort(request).isAllowConfidentialOperationsOnInsecureChannels()))
+ {
+ sendJsonErrorResponse(request,
+ response,
+ HttpServletResponse.SC_FORBIDDEN,
+ "Operation '" + operationName + "' can only be performed over a secure (HTTPS) connection");
+ return;
+ }
else
{
switch (requestMethod)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org