diff options
Diffstat (limited to 'java/broker/src')
2 files changed, 10 insertions, 46 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java index 74ca0399a1..0ee5763d91 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java +++ b/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java @@ -38,7 +38,6 @@ import javax.management.MBeanOperationInfo; import javax.management.JMException; import javax.management.NotificationListener; import javax.management.Notification; -import javax.management.OperationsException; import javax.security.auth.Subject; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; @@ -140,8 +139,6 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler, Notificati Principal principal = principals.iterator().next(); String identity = principal.getName(); - - checkCompatibility(proxy, method, args); if (isAdminMethod(args)) { @@ -171,49 +168,6 @@ public class MBeanInvocationHandlerImpl implements InvocationHandler, Notificati throw new SecurityException("Access denied"); } - private void checkCompatibility(final Object proxy, final Method method, final Object[] args) throws Throwable - { - if (args[0] instanceof ObjectName && method.getName().equals("invoke")) - { - //get the ObjectName and invoked Method name - final ObjectName objectName = (ObjectName) args[0]; - - final String mbeanMethod = (args.length > 1) ? (String) args[1] : null; - if (mbeanMethod == null) - { - return; - } - - //UserManagement MBean compatibility checks - if(objectName.getKeyProperty("type").equals(UserManagement.TYPE)) - { - if (mbeanMethod.equals("createUser") || mbeanMethod.equals("setPassword")) - { - //get the provided argument values and types for the method - if( args.length > 2 && args[2] != null && args[2] instanceof Object[] && - args.length > 3 && args[3] != null && args[3] instanceof String[]) - { - //check the 2nd argument value is a char[] - final Object[] argValues = (Object[]) args[2]; - final String[] argTypes = (String[]) args[3]; - - final Object actualValue = (argValues.length > 1) ? argValues[1] : null; - final String expectedType = (argTypes.length > 1) ? (String) argTypes[1] : null; - - if (expectedType != null && expectedType.equals("[C")) - { - if (actualValue != null && actualValue instanceof String) - { - throw new OperationsException("Incorrect parameter type provided.\n" + - "Please upgrade to a newer management console release to correct this issue."); - } - } - } - } - } - } - } - private boolean isAdminMethod(Object[] args) { if (args[0] instanceof ObjectName) diff --git a/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java b/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java index 45ab57ca90..5a2965cb32 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java +++ b/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java @@ -108,6 +108,11 @@ public class AMQUserManagementMBean extends AMQManagedObject implements UserMana return UserManagement.TYPE; } + public boolean setPassword(String username, String password) + { + return setPassword(username, password.toCharArray()); + } + public boolean setPassword(String username, char[] password) { try @@ -196,6 +201,11 @@ public class AMQUserManagementMBean extends AMQManagedObject implements UserMana return true; } + + public boolean createUser(String username, String password, boolean read, boolean write, boolean admin) + { + return createUser(username, password.toCharArray(), read, write, admin); + } public boolean createUser(String username, char[] password, boolean read, boolean write, boolean admin) { |
