You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2013/04/29 15:50:10 UTC
svn commit: r1477078 - in /qpid/trunk/qpid/java/broker/src:
main/java/org/apache/qpid/server/security/auth/database/
main/java/org/apache/qpid/server/security/auth/manager/
main/java/org/apache/qpid/server/security/auth/sasl/
main/java/org/apache/qpid/...
Author: robbie
Date: Mon Apr 29 13:50:09 2013
New Revision: 1477078
URL: http://svn.apache.org/r1477078
Log:
QPID-4784: stop generating errors during creation of PDAM's due to duplicate sasl provider registration, simplify PDAM.
Removed:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/JCAProvider.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/anonymous/AnonymousInitialiser.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/model/BrokerShutdownTest.java
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/AuthenticationProviderInitialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/UsernamePasswordInitialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/amqplain/AmqPlainInitialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedInitialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexInitialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5Initialiser.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/plain/PlainInitialiser.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/CRAMMD5HexServerTest.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/TestPrincipalDatabase.java
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/AbstractPasswordFilePrincipalDatabase.java Mon Apr 29 13:50:09 2013
@@ -22,8 +22,6 @@ package org.apache.qpid.server.security.
import org.apache.log4j.Logger;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
-import org.apache.qpid.server.security.auth.sasl.AuthenticationProviderInitialiser;
-import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.login.AccountNotFoundException;
@@ -44,27 +42,14 @@ import java.util.regex.Pattern;
public abstract class AbstractPasswordFilePrincipalDatabase<U extends PasswordPrincipal> implements PrincipalDatabase
{
- private final Pattern _regexp = Pattern.compile(":");
-
- private final Map<String, AuthenticationProviderInitialiser> _saslServers =
- new HashMap<String, AuthenticationProviderInitialiser>();
-
protected static final String DEFAULT_ENCODING = "utf-8";
+
+ private final Pattern _regexp = Pattern.compile(":");
private final Map<String, U> _userMap = new HashMap<String, U>();
private final ReentrantLock _userUpdate = new ReentrantLock();
private final Random _random = new Random();
private File _passwordFile;
-
- protected AbstractPasswordFilePrincipalDatabase(UsernamePasswordInitialiser... initialisers)
- {
- for(UsernamePasswordInitialiser initialiser : initialisers)
- {
- initialiser.initialise(this);
- _saslServers.put(initialiser.getMechanismName(), initialiser);
- }
- }
-
public final void open(File passwordFile) throws IOException
{
getLogger().info("PasswordFile using file " + passwordFile.getAbsolutePath());
@@ -397,11 +382,6 @@ public abstract class AbstractPasswordFi
loadPasswordFile();
}
- public Map<String, AuthenticationProviderInitialiser> getMechanisms()
- {
- return _saslServers;
- }
-
public List<Principal> getUsers()
{
return new LinkedList<Principal>(_userMap.values());
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java Mon Apr 29 13:50:09 2013
@@ -20,13 +20,20 @@
*/
package org.apache.qpid.server.security.auth.database;
-import org.apache.log4j.Logger;
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.AccountNotFoundException;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+import org.apache.log4j.Logger;
import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5HashedInitialiser;
+import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5HashedSaslServer;
import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5HexInitialiser;
-
-import javax.security.auth.login.AccountNotFoundException;
-import java.security.Principal;
+import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5HexSaslServer;
/**
* Represents a user database where the account information is stored in a simple flat file.
@@ -38,14 +45,20 @@ import java.security.Principal;
public class Base64MD5PasswordFilePrincipalDatabase extends AbstractPasswordFilePrincipalDatabase<HashedUser>
{
private final Logger _logger = Logger.getLogger(Base64MD5PasswordFilePrincipalDatabase.class);
+ private String _mechanismsString;
+ private final Map<String, CallbackHandler> _callbackHandlerMap = new HashMap<String, CallbackHandler>();
public Base64MD5PasswordFilePrincipalDatabase()
{
- /**
- * Create Authenticators for MD5 Password file.
- */
- super(new CRAMMD5HashedInitialiser(), new CRAMMD5HexInitialiser());
+ CRAMMD5HashedInitialiser crammd5HashedInitialiser = new CRAMMD5HashedInitialiser();
+ crammd5HashedInitialiser.initialise(this);
+ _callbackHandlerMap.put(CRAMMD5HashedSaslServer.MECHANISM, crammd5HashedInitialiser.getCallbackHandler());
+
+ CRAMMD5HexInitialiser crammd5HexInitialiser = new CRAMMD5HexInitialiser();
+ crammd5HexInitialiser.initialise(this);
+ _callbackHandlerMap.put(CRAMMD5HexSaslServer.MECHANISM, crammd5HexInitialiser.getCallbackHandler());
+ _mechanismsString = CRAMMD5HashedSaslServer.MECHANISM + " " + CRAMMD5HexSaslServer.MECHANISM;
}
@@ -113,4 +126,31 @@ public class Base64MD5PasswordFilePrinci
return _logger;
}
+ @Override
+ public String getMechanisms()
+ {
+ return _mechanismsString;
+ }
+
+ @Override
+ public SaslServer createSaslServer(String mechanism, String localFQDN, Principal externalPrincipal) throws SaslException
+ {
+ CallbackHandler callbackHandler = _callbackHandlerMap.get(mechanism);
+ if(callbackHandler == null)
+ {
+ throw new SaslException("Unsupported mechanism: " + mechanism);
+ }
+
+ //The SaslServers simply delegate to the built in CRAM-MD5 SaslServer
+ if(CRAMMD5HashedSaslServer.MECHANISM.equals(mechanism))
+ {
+ return new CRAMMD5HashedSaslServer(mechanism, "AMQP", localFQDN, null, callbackHandler);
+ }
+ else if(CRAMMD5HexSaslServer.MECHANISM.equals(mechanism))
+ {
+ return new CRAMMD5HexSaslServer(mechanism, "AMQP", localFQDN, null, callbackHandler);
+ }
+
+ throw new SaslException("Unsupported mechanism: " + mechanism);
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PlainPasswordFilePrincipalDatabase.java Mon Apr 29 13:50:09 2013
@@ -20,14 +20,22 @@
*/
package org.apache.qpid.server.security.auth.database;
-import org.apache.log4j.Logger;
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.login.AccountNotFoundException;
+import javax.security.sasl.Sasl;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+import org.apache.log4j.Logger;
import org.apache.qpid.server.security.auth.sasl.amqplain.AmqPlainInitialiser;
+import org.apache.qpid.server.security.auth.sasl.amqplain.AmqPlainSaslServer;
import org.apache.qpid.server.security.auth.sasl.crammd5.CRAMMD5Initialiser;
import org.apache.qpid.server.security.auth.sasl.plain.PlainInitialiser;
-
-import javax.security.auth.login.AccountNotFoundException;
-import java.security.Principal;
+import org.apache.qpid.server.security.auth.sasl.plain.PlainSaslServer;
/**
* Represents a user database where the account information is stored in a simple flat file.
@@ -40,13 +48,24 @@ public class PlainPasswordFilePrincipalD
{
private final Logger _logger = Logger.getLogger(PlainPasswordFilePrincipalDatabase.class);
+ private final Map<String, CallbackHandler> _callbackHandlerMap = new HashMap<String, CallbackHandler>();
+ private String _mechanismsString;
public PlainPasswordFilePrincipalDatabase()
{
- /**
- * Create Authenticators for Plain Password file.
- */
- super(new AmqPlainInitialiser(), new PlainInitialiser(), new CRAMMD5Initialiser());
+ AmqPlainInitialiser amqPlainInitialiser = new AmqPlainInitialiser();
+ amqPlainInitialiser.initialise(this);
+ _callbackHandlerMap.put(AmqPlainSaslServer.MECHANISM, amqPlainInitialiser.getCallbackHandler());
+
+ PlainInitialiser plainInitialiser = new PlainInitialiser();
+ plainInitialiser.initialise(this);
+ _callbackHandlerMap.put(PlainSaslServer.MECHANISM, plainInitialiser.getCallbackHandler());
+
+ CRAMMD5Initialiser crammd5Initialiser = new CRAMMD5Initialiser();
+ crammd5Initialiser.initialise(this);
+ _callbackHandlerMap.put(CRAMMD5Initialiser.MECHANISM, crammd5Initialiser.getCallbackHandler());
+
+ _mechanismsString = AmqPlainSaslServer.MECHANISM + " " + PlainSaslServer.MECHANISM + " " + CRAMMD5Initialiser.MECHANISM;
}
@@ -91,4 +110,37 @@ public class PlainPasswordFilePrincipalD
{
return _logger;
}
+
+
+ @Override
+ public String getMechanisms()
+ {
+ return _mechanismsString;
+ }
+
+ @Override
+ public SaslServer createSaslServer(String mechanism, String localFQDN, Principal externalPrincipal) throws SaslException
+ {
+ CallbackHandler callbackHandler = _callbackHandlerMap.get(mechanism);
+ if(callbackHandler == null)
+ {
+ throw new SaslException("Unsupported mechanism: " + mechanism);
+ }
+
+ if(CRAMMD5Initialiser.MECHANISM.equals(mechanism))
+ {
+ //simply delegate to the built in CRAM-MD5 SaslServer
+ return Sasl.createSaslServer(mechanism, "AMQP", localFQDN, null, callbackHandler);
+ }
+ else if(PlainSaslServer.MECHANISM.equals(mechanism))
+ {
+ return new PlainSaslServer(callbackHandler);
+ }
+ else if(AmqPlainSaslServer.MECHANISM.equals(mechanism))
+ {
+ return new AmqPlainSaslServer(callbackHandler);
+ }
+
+ throw new SaslException("Unsupported mechanism: " + mechanism);
+ }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/PrincipalDatabase.java Mon Apr 29 13:50:09 2013
@@ -24,6 +24,8 @@ import org.apache.qpid.server.security.a
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.login.AccountNotFoundException;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
import java.io.File;
import java.io.IOException;
@@ -100,8 +102,13 @@ public interface PrincipalDatabase
*/
void reload() throws IOException;
- public Map<String, AuthenticationProviderInitialiser> getMechanisms();
+ List<Principal> getUsers();
+ /**
+ * Get the list of mechanisms supported for use with the PrincipalDatabase
+ * @return space separated list of supported Sasl mechanisms
+ */
+ public String getMechanisms();
- List<Principal> getUsers();
+ public SaslServer createSaslServer(String mechanism, String localFQDN, Principal externalPrincipal) throws SaslException;
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManager.java Mon Apr 29 13:50:09 2013
@@ -28,14 +28,11 @@ import javax.security.sasl.SaslServer;
import org.apache.qpid.server.security.auth.AuthenticationResult;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
-import org.apache.qpid.server.security.auth.sasl.anonymous.AnonymousInitialiser;
import org.apache.qpid.server.security.auth.sasl.anonymous.AnonymousSaslServer;
public class AnonymousAuthenticationManager implements AuthenticationManager
{
- private static final AnonymousInitialiser SASL_INITIALISER = new AnonymousInitialiser();
-
- private static final String ANONYMOUS = SASL_INITIALISER.getMechanismName();
+ private static final String ANONYMOUS = "ANONYMOUS";
public static final String ANONYMOUS_USERNAME = "ANONYMOUS";
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java Mon Apr 29 13:50:09 2013
@@ -34,16 +34,9 @@ import org.apache.qpid.server.security.a
* {@link AuthenticationResult} containing the user's main {@link Principal} and zero or
* more other implementation-specific principals.
* </p>
- * <p>
- * The {@link #initialise()} method is responsible for registering SASL mechanisms required by
- * the manager. The {@link #close()} method must reverse this registration.
- * </p>
*/
public interface AuthenticationManager extends Closeable
{
- /** The name for the required SASL Server mechanisms */
- public static final String PROVIDER_NAME= "AMQSASLProvider-Server";
-
/**
* Initialise the authentication plugin.
*
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java Mon Apr 29 13:50:09 2013
@@ -24,51 +24,19 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.Principal;
-import org.apache.log4j.Logger;
-import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.security.auth.AuthenticationResult;
-import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
-import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-import org.apache.qpid.server.security.auth.sasl.AuthenticationProviderInitialiser;
-import org.apache.qpid.server.security.auth.sasl.JCAProvider;
-import org.apache.qpid.server.security.auth.UsernamePrincipal;
-
-import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.login.AccountNotFoundException;
-import javax.security.sasl.Sasl;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
-import javax.security.sasl.SaslServerFactory;
-
-import java.security.Security;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.security.auth.AuthenticationResult;
+import org.apache.qpid.server.security.auth.UsernamePrincipal;
+import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-/**
- * Concrete implementation of the AuthenticationManager that determines if supplied
- * user credentials match those appearing in a PrincipalDatabase. The implementation
- * of the PrincipalDatabase is determined from the configuration.
- */
public class PrincipalDatabaseAuthenticationManager implements AuthenticationManager
{
-
- private static final Logger _logger = Logger.getLogger(PrincipalDatabaseAuthenticationManager.class);
-
- /** The list of mechanisms, in the order in which they are configured (i.e. preferred order) */
- private String _mechanisms;
-
- /** Maps from the mechanism to the callback handler to use for handling those requests */
- private final Map<String, CallbackHandler> _callbackHandlerMap = new HashMap<String, CallbackHandler>();
-
- /**
- * Maps from the mechanism to the properties used to initialise the server. See the method Sasl.createSaslServer for
- * details of the use of these properties. This map is populated during initialisation of each provider.
- */
- private final Map<String, Map<String, ?>> _serverCreationProperties = new HashMap<String, Map<String, ?>>();
-
private final PrincipalDatabase _principalDatabase;
private final String _passwordFile;
@@ -92,77 +60,16 @@ public class PrincipalDatabaseAuthentica
{
throw new IllegalConfigurationException("Cannot use password database at :" + _passwordFile, e);
}
-
- final Map<String, Class<? extends SaslServerFactory>> providerMap = new TreeMap<String, Class<? extends SaslServerFactory>>();
-
- initialiseAuthenticationMechanisms(providerMap, _principalDatabase);
-
- if (providerMap.size() > 0)
- {
- // Ensure we are used before the defaults
- if (Security.insertProviderAt(new JCAProvider(PROVIDER_NAME, providerMap), 1) == -1)
- {
- _logger.error("Unable to load custom SASL providers. Qpid custom SASL authenticators unavailable.");
- }
- else
- {
- _logger.info("Additional SASL providers successfully registered.");
- }
- }
- else
- {
- _logger.warn("No additional SASL providers registered.");
- }
- }
-
- private void initialiseAuthenticationMechanisms(Map<String, Class<? extends SaslServerFactory>> providerMap, PrincipalDatabase database)
- {
- if (database == null || database.getMechanisms().size() == 0)
- {
- _logger.warn("No Database or no mechanisms to initialise authentication");
- return;
- }
-
- for (Map.Entry<String, AuthenticationProviderInitialiser> mechanism : database.getMechanisms().entrySet())
- {
- initialiseAuthenticationMechanism(mechanism.getKey(), mechanism.getValue(), providerMap);
- }
- }
-
- private void initialiseAuthenticationMechanism(String mechanism, AuthenticationProviderInitialiser initialiser,
- Map<String, Class<? extends SaslServerFactory>> providerMap)
- {
- if (_mechanisms == null)
- {
- _mechanisms = mechanism;
- }
- else
- {
- // simple append should be fine since the number of mechanisms is small and this is a one time initialisation
- _mechanisms = _mechanisms + " " + mechanism;
- }
- _callbackHandlerMap.put(mechanism, initialiser.getCallbackHandler());
- _serverCreationProperties.put(mechanism, initialiser.getProperties());
- Class<? extends SaslServerFactory> factory = initialiser.getServerFactoryClassForJCARegistration();
- if (factory != null)
- {
- providerMap.put(mechanism, factory);
- }
- _logger.info("Initialised " + mechanism + " SASL provider successfully");
}
public String getMechanisms()
{
- return _mechanisms;
+ return _principalDatabase.getMechanisms();
}
public SaslServer createSaslServer(String mechanism, String localFQDN, Principal externalPrincipal) throws SaslException
{
- Map<String, ?> properties = _serverCreationProperties.get(mechanism);
- CallbackHandler callbackHandler = _callbackHandlerMap.get(mechanism);
-
- return Sasl.createSaslServer(mechanism, "AMQP", localFQDN, properties,
- callbackHandler);
+ return _principalDatabase.createSaslServer(mechanism, localFQDN, externalPrincipal);
}
/**
@@ -215,8 +122,7 @@ public class PrincipalDatabaseAuthentica
public void close()
{
- _mechanisms = null;
- Security.removeProvider(PROVIDER_NAME);
+
}
public PrincipalDatabase getPrincipalDatabase()
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManager.java Mon Apr 29 13:50:09 2013
@@ -49,7 +49,6 @@ public class SimpleLDAPAuthenticationMan
{
private static final Logger _logger = Logger.getLogger(SimpleLDAPAuthenticationManager.class);
- private static final String PLAIN_MECHANISM = "PLAIN";
private final String _providerSearchURL;
private final String _providerAuthURL;
private final String _searchContext;
@@ -74,13 +73,13 @@ public class SimpleLDAPAuthenticationMan
@Override
public String getMechanisms()
{
- return PLAIN_MECHANISM;
+ return PlainSaslServer.MECHANISM;
}
@Override
public SaslServer createSaslServer(String mechanism, String localFQDN, Principal externalPrincipal) throws SaslException
{
- if(PLAIN_MECHANISM.equals(mechanism))
+ if(PlainSaslServer.MECHANISM.equals(mechanism))
{
return new PlainSaslServer(new SimpleLDAPPlainCallbackHandler());
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/AuthenticationProviderInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/AuthenticationProviderInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/AuthenticationProviderInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/AuthenticationProviderInitialiser.java Mon Apr 29 13:50:09 2013
@@ -21,8 +21,6 @@
package org.apache.qpid.server.security.auth.sasl;
import javax.security.auth.callback.CallbackHandler;
-import javax.security.sasl.SaslServerFactory;
-import java.util.Map;
public interface AuthenticationProviderInitialiser
{
@@ -38,17 +36,4 @@ public interface AuthenticationProviderI
* fully threadsafe.
*/
CallbackHandler getCallbackHandler();
-
- /**
- * Get the properties that must be passed in to the Sasl.createSaslServer method.
- * @return the properties, which may be null
- */
- Map<String, ?> getProperties();
-
- /**
- * Get the class that is the server factory. This is used for the JCA registration.
- * @return null if no JCA registration is required, otherwise return the class
- * that will be used in JCA registration
- */
- Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration();
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/UsernamePasswordInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/UsernamePasswordInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/UsernamePasswordInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/UsernamePasswordInitialiser.java Mon Apr 29 13:50:09 2013
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.security.auth.sasl;
-import org.apache.commons.configuration.Configuration;
import org.apache.log4j.Logger;
import org.apache.qpid.server.security.auth.UsernamePrincipal;
@@ -35,7 +34,6 @@ import javax.security.auth.login.Account
import javax.security.sasl.AuthorizeCallback;
import java.io.IOException;
import java.security.Principal;
-import java.util.Map;
public abstract class UsernamePasswordInitialiser implements AuthenticationProviderInitialiser
{
@@ -88,15 +86,6 @@ public abstract class UsernamePasswordIn
}
}
- public void initialise(String baseConfigPath, Configuration configuration,
- Map<String, PrincipalDatabase> principalDatabases) throws Exception
- {
- String principalDatabaseName = configuration.getString(baseConfigPath + ".principal-database");
- PrincipalDatabase db = principalDatabases.get(principalDatabaseName);
-
- initialise(db);
- }
-
public void initialise(PrincipalDatabase db)
{
if (db == null)
@@ -111,10 +100,4 @@ public abstract class UsernamePasswordIn
{
return _callbackHandler;
}
-
- public Map<String, ?> getProperties()
- {
- // there are no properties required for the CRAM-MD5 implementation
- return null;
- }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/amqplain/AmqPlainInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/amqplain/AmqPlainInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/amqplain/AmqPlainInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/amqplain/AmqPlainInitialiser.java Mon Apr 29 13:50:09 2013
@@ -22,17 +22,10 @@ package org.apache.qpid.server.security.
import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
-import javax.security.sasl.SaslServerFactory;
-
public class AmqPlainInitialiser extends UsernamePasswordInitialiser
{
public String getMechanismName()
{
return "AMQPLAIN";
}
-
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- return AmqPlainSaslServerFactory.class;
- }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HashedInitialiser.java Mon Apr 29 13:50:09 2013
@@ -23,9 +23,6 @@ package org.apache.qpid.server.security.
import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
-import javax.security.sasl.SaslServerFactory;
-import java.util.Map;
-
public class CRAMMD5HashedInitialiser extends UsernamePasswordInitialiser
{
public String getMechanismName()
@@ -33,18 +30,8 @@ public class CRAMMD5HashedInitialiser ex
return CRAMMD5HashedSaslServer.MECHANISM;
}
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- return CRAMMD5HashedServerFactory.class;
- }
-
public void initialise(PrincipalDatabase passwordFile)
{
super.initialise(passwordFile);
}
-
- public Map<String, ?> getProperties()
- {
- return null;
- }
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5HexInitialiser.java Mon Apr 29 13:50:09 2013
@@ -20,19 +20,18 @@
*/
package org.apache.qpid.server.security.auth.sasl.crammd5;
-import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-import org.apache.qpid.server.security.auth.sasl.AuthenticationProviderInitialiser;
-import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
-
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.login.AccountNotFoundException;
-import javax.security.sasl.SaslServerFactory;
-
import java.io.File;
import java.io.IOException;
import java.security.Principal;
import java.util.List;
-import java.util.Map;
+
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.login.AccountNotFoundException;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
+import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
public class CRAMMD5HexInitialiser extends UsernamePasswordInitialiser
{
@@ -41,16 +40,6 @@ public class CRAMMD5HexInitialiser exten
return CRAMMD5HexSaslServer.MECHANISM;
}
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- return CRAMMD5HexServerFactory.class;
- }
-
- public Map<String, ?> getProperties()
- {
- return null;
- }
-
public void initialise(PrincipalDatabase db)
{
super.initialise(new HexifyPrincipalDatabase(db));
@@ -127,11 +116,6 @@ public class CRAMMD5HexInitialiser exten
return _realPricipalDatabase.getUser(username);
}
- public Map<String, AuthenticationProviderInitialiser> getMechanisms()
- {
- return _realPricipalDatabase.getMechanisms();
- }
-
public List<Principal> getUsers()
{
return _realPricipalDatabase.getUsers();
@@ -147,6 +131,19 @@ public class CRAMMD5HexInitialiser exten
{
throw new UnsupportedOperationException();
}
+
+ @Override
+ public String getMechanisms()
+ {
+ return _realPricipalDatabase.getMechanisms();
+ }
+
+ @Override
+ public SaslServer createSaslServer(String mechanism, String localFQDN,
+ Principal externalPrincipal) throws SaslException
+ {
+ return _realPricipalDatabase.createSaslServer(mechanism, localFQDN, externalPrincipal);
+ }
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5Initialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5Initialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5Initialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/crammd5/CRAMMD5Initialiser.java Mon Apr 29 13:50:09 2013
@@ -20,52 +20,14 @@
*/
package org.apache.qpid.server.security.auth.sasl.crammd5;
-import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
-import javax.security.sasl.SaslServerFactory;
-
public class CRAMMD5Initialiser extends UsernamePasswordInitialiser
{
- private HashDirection _hashDirection;
-
- public enum HashDirection
- {
- INCOMMING, PASSWORD_FILE
- }
-
+ public static final String MECHANISM = "CRAM-MD5";
public String getMechanismName()
{
- return "CRAM-MD5";
- }
-
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- // since the CRAM-MD5 provider is registered as part of the JDK, we do not
- // return the factory class here since we do not need to register it ourselves.
- if (_hashDirection == HashDirection.PASSWORD_FILE)
- {
- return null;
- }
- else
- {
- //fixme we need a server that will correctly has the incomming plain text for comparison to file.
- _logger.warn("we need a server that will correctly convert the incomming plain text for comparison to file.");
- return null;
- }
+ return MECHANISM;
}
-
- public void initialise(PrincipalDatabase passwordFile)
- {
- initialise(passwordFile, HashDirection.PASSWORD_FILE);
- }
-
- public void initialise(PrincipalDatabase passwordFile, HashDirection direction)
- {
- super.initialise(passwordFile);
-
- _hashDirection = direction;
- }
-
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/plain/PlainInitialiser.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/plain/PlainInitialiser.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/plain/PlainInitialiser.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/sasl/plain/PlainInitialiser.java Mon Apr 29 13:50:09 2013
@@ -22,17 +22,10 @@ package org.apache.qpid.server.security.
import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
-import javax.security.sasl.SaslServerFactory;
-
public class PlainInitialiser extends UsernamePasswordInitialiser
{
public String getMechanismName()
{
return "PLAIN";
}
-
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- return PlainSaslServerFactory.class;
- }
}
Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java Mon Apr 29 13:50:09 2013
@@ -28,10 +28,6 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.security.Principal;
-import java.security.Provider;
-import java.security.Security;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,7 +42,6 @@ import org.apache.qpid.server.security.a
import org.apache.qpid.server.security.auth.UsernamePrincipal;
import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase;
import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-import org.apache.qpid.server.security.auth.sasl.AuthenticationProviderInitialiser;
import org.apache.qpid.server.security.auth.sasl.UsernamePasswordInitialiser;
import org.apache.qpid.test.utils.QpidTestCase;
@@ -56,6 +51,7 @@ import org.apache.qpid.test.utils.QpidTe
*/
public class PrincipalDatabaseAuthenticationManagerTest extends QpidTestCase
{
+ private static final String LOCALHOST = "localhost";
private static final String MOCK_MECH_NAME = "MOCK-MECH-NAME";
private static final UsernamePrincipal PRINCIPAL = new UsernamePrincipal("guest");
@@ -92,40 +88,8 @@ public class PrincipalDatabaseAuthentica
{
_principalDatabase = mock(PrincipalDatabase.class);
- AuthenticationProviderInitialiser _mockMechInitialiser = mock(AuthenticationProviderInitialiser.class);
- Map<String, AuthenticationProviderInitialiser> _initialisers = Collections.singletonMap(MOCK_MECH_NAME, _mockMechInitialiser);
-
- when(_principalDatabase.getMechanisms()).thenReturn(_initialisers);
-
- _manager = new PrincipalDatabaseAuthenticationManager(_principalDatabase, _passwordFileLocation);
- _manager.initialise();
- }
-
- private void setupMocksWithInitialiser() throws Exception
- {
- _principalDatabase = mock(PrincipalDatabase.class);
-
- UsernamePasswordInitialiser usernamePasswordInitialiser = new UsernamePasswordInitialiser()
- {
- @Override
- public Class<? extends SaslServerFactory> getServerFactoryClassForJCARegistration()
- {
- return MySaslServerFactory.class;
- }
-
- @Override
- public String getMechanismName()
- {
- return MOCK_MECH_NAME;
- }
- };
-
- Map<String,AuthenticationProviderInitialiser> initialisers = new HashMap<String, AuthenticationProviderInitialiser>();
- initialisers.put(MOCK_MECH_NAME, usernamePasswordInitialiser);
-
- when(_principalDatabase.getMechanisms()).thenReturn(initialisers);
-
- usernamePasswordInitialiser.initialise(_principalDatabase);
+ when(_principalDatabase.getMechanisms()).thenReturn(MOCK_MECH_NAME);
+ when(_principalDatabase.createSaslServer(MOCK_MECH_NAME, LOCALHOST, null)).thenReturn(new MySaslServer(false, true));
_manager = new PrincipalDatabaseAuthenticationManager(_principalDatabase, _passwordFileLocation);
_manager.initialise();
@@ -175,32 +139,14 @@ public class PrincipalDatabaseAuthentica
}
/**
- * Tests that the PDAM registers SASL mechanisms correctly with the runtime.
- */
- public void testRegisteredMechanisms() throws Exception
- {
- //Ensure we haven't registered anything yet (though this would really indicate a prior test failure!)
- Provider qpidProvider = Security.getProvider(AuthenticationManager.PROVIDER_NAME);
- assertNull(qpidProvider);
-
- setupMocksWithInitialiser();
-
- assertNotNull(_manager.getMechanisms());
- assertEquals(MOCK_MECH_NAME, _manager.getMechanisms());
-
- qpidProvider = Security.getProvider(AuthenticationManager.PROVIDER_NAME);
- assertNotNull(qpidProvider);
- }
-
- /**
* Tests that the SASL factory method createSaslServer correctly
* returns a non-null implementation.
*/
public void testSaslMechanismCreation() throws Exception
{
- setupMocksWithInitialiser();
+ setupMocks();
- SaslServer server = _manager.createSaslServer(MOCK_MECH_NAME, "localhost", null);
+ SaslServer server = _manager.createSaslServer(MOCK_MECH_NAME, LOCALHOST, null);
assertNotNull(server);
// Merely tests the creation of the mechanism. Mechanisms themselves are tested
// by their own tests.
@@ -280,24 +226,6 @@ public class PrincipalDatabaseAuthentica
assertEquals(AuthenticationStatus.CONTINUE, result.getStatus());
}
- /**
- * Tests the ability to de-register the provider.
- */
- public void testClose() throws Exception
- {
- setupMocksWithInitialiser();
-
- assertEquals(MOCK_MECH_NAME, _manager.getMechanisms());
- assertNotNull(Security.getProvider(AuthenticationManager.PROVIDER_NAME));
-
- _manager.close();
-
- // Check provider has been removed.
- assertNull(_manager.getMechanisms());
- assertNull(Security.getProvider(AuthenticationManager.PROVIDER_NAME));
- _manager = null;
- }
-
public void testOnCreate() throws Exception
{
setupMocks();
Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/CRAMMD5HexServerTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/CRAMMD5HexServerTest.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/CRAMMD5HexServerTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/CRAMMD5HexServerTest.java Mon Apr 29 13:50:09 2013
@@ -69,7 +69,7 @@ public class CRAMMD5HexServerTest extend
_saslServer = _saslFactory.createSaslServer(CRAMMD5HexSaslServer.MECHANISM,
"AMQP",
"localhost",
- _initializer.getProperties(),
+ null,
_initializer.getCallbackHandler());
assertNotNull("Unable to create saslServer with mechanism type " + CRAMMD5HexSaslServer.MECHANISM, _saslServer);
Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/TestPrincipalDatabase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/TestPrincipalDatabase.java?rev=1477078&r1=1477077&r2=1477078&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/TestPrincipalDatabase.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/auth/sasl/TestPrincipalDatabase.java Mon Apr 29 13:50:09 2013
@@ -21,16 +21,17 @@
package org.apache.qpid.server.security.auth.sasl;
-import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
-
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.login.AccountNotFoundException;
-
import java.io.File;
import java.io.IOException;
import java.security.Principal;
import java.util.List;
-import java.util.Map;
+
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.login.AccountNotFoundException;
+import javax.security.sasl.SaslException;
+import javax.security.sasl.SaslServer;
+
+import org.apache.qpid.server.security.auth.database.PrincipalDatabase;
public class TestPrincipalDatabase implements PrincipalDatabase
{
@@ -47,12 +48,6 @@ public class TestPrincipalDatabase imple
return false;
}
- public Map<String, AuthenticationProviderInitialiser> getMechanisms()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
public Principal getUser(String username)
{
// TODO Auto-generated method stub
@@ -94,4 +89,19 @@ public class TestPrincipalDatabase imple
// TODO Auto-generated method stub
}
+ @Override
+ public String getMechanisms()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public SaslServer createSaslServer(String mechanism, String localFQDN,
+ Principal externalPrincipal) throws SaslException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org