diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-07-23 12:14:45 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-07-23 12:14:45 +0000 |
commit | 29372b999718ae22d29146c1aace773970d2dfb1 (patch) | |
tree | 04da264597b8215244889a49135e474183110ebf /java | |
parent | 46c17d266ac7c92bf62fc8135c2840bfe4cdf65b (diff) | |
download | qpid-python-29372b999718ae22d29146c1aace773970d2dfb1.tar.gz |
QPID-5917 : deleting a user from a SCRAM-* auth provider causes the auth provider to deregister
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1612824 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
2 files changed, 16 insertions, 19 deletions
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java index f08c37008a..76afad2f12 100644 --- a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java +++ b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractScramAuthenticationManager.java @@ -45,7 +45,6 @@ import org.apache.qpid.server.configuration.updater.VoidTaskWithException; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.PasswordCredentialManagingAuthenticationProvider; -import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.User; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.security.auth.AuthenticationResult; @@ -56,7 +55,6 @@ public abstract class AbstractScramAuthenticationManager<X extends AbstractScram extends AbstractAuthenticationManager<X> implements PasswordCredentialManagingAuthenticationProvider<X> { - public static final String SCRAM_USER_TYPE = "scram"; static final Charset ASCII = Charset.forName("ASCII"); private final SecureRandom _random = new SecureRandom(); @@ -257,7 +255,7 @@ public abstract class AbstractScramAuthenticationManager<X extends AbstractScram userAttrs.put(User.ID, UUID.randomUUID()); userAttrs.put(User.NAME, username); userAttrs.put(User.PASSWORD, createStoredPassword(password)); - userAttrs.put(User.TYPE, SCRAM_USER_TYPE); + userAttrs.put(User.TYPE, ScramAuthUser.SCRAM_USER_TYPE); ScramAuthUser user = new ScramAuthUser(userAttrs, AbstractScramAuthenticationManager.this); user.create(); @@ -287,7 +285,7 @@ public abstract class AbstractScramAuthenticationManager<X extends AbstractScram final ScramAuthUser authUser = getUser(user); if(authUser != null) { - authUser.setState(State.DELETED); + authUser.delete(); } else { @@ -384,11 +382,6 @@ public abstract class AbstractScramAuthenticationManager<X extends AbstractScram return super.addChild(childClass, attributes, otherParents); } - void doDeleted() - { - deleted(); - } - Map<String, ScramAuthUser> getUserMap() { return _users; diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramAuthUser.java b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramAuthUser.java index 9a2d27f512..f28b46d1dd 100644 --- a/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramAuthUser.java +++ b/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/ScramAuthUser.java @@ -37,12 +37,14 @@ import org.apache.qpid.server.model.ManagedObject; import org.apache.qpid.server.model.ManagedObjectFactoryConstructor; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.State; +import org.apache.qpid.server.model.StateTransition; import org.apache.qpid.server.model.User; import org.apache.qpid.server.security.access.Operation; -@ManagedObject( category = false, type = "scram") +@ManagedObject( category = false, type = ScramAuthUser.SCRAM_USER_TYPE) class ScramAuthUser extends AbstractConfiguredObject<ScramAuthUser> implements User<ScramAuthUser> { + public static final String SCRAM_USER_TYPE = "scram"; private AbstractScramAuthenticationManager _authenticationManager; @ManagedAttributeField @@ -86,23 +88,25 @@ class ScramAuthUser extends AbstractConfiguredObject<ScramAuthUser> implements U throw new IllegalArgumentException(getClass().getSimpleName() + " must be durable"); } } + @Override - protected boolean setState(final State desiredState) + protected void authoriseSetDesiredState(final State desiredState) throws AccessControlException { if(desiredState == State.DELETED) { _authenticationManager.getSecurityManager().authoriseUserOperation(Operation.DELETE, getName()); - _authenticationManager.getUserMap().remove(getName()); - _authenticationManager.doDeleted(); - deleted(); - return true; - } - else - { - return false; } + } + @StateTransition(currentState = {State.ACTIVE}, desiredState = State.DELETED) + private void doDelete() + { + _authenticationManager.getUserMap().remove(getName()); + deleted(); + } + + @Override public void setAttributes(final Map<String, Object> attributes) throws IllegalStateException, AccessControlException, IllegalArgumentException |