* Fixed: problems with anonymous access
* Fixed: Failing tests
* Fixed: AbstractContextFactory removed some elements of the environment map user specified
git-svn-id: https://svn.apache.org/repos/asf/directory/apacheds/branches/direve-158@190360 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java b/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
index 85f821b..295afe6 100644
--- a/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
+++ b/core/src/main/java/org/apache/ldap/server/AbstractTestCase.java
@@ -291,6 +291,7 @@
env.putAll( new ShutdownConfiguration().toJndiEnvironment() );
env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
env.put( Context.SECURITY_CREDENTIALS, "secret" );
+ env.put( Context.SECURITY_AUTHENTICATION, "simple" );
try { new InitialContext( env ); } catch( Exception e ) {}
diff --git a/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java b/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
index 9dfeac3..9ae53fa 100644
--- a/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
+++ b/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
@@ -71,6 +71,8 @@
String authentication;
String providerUrl;
+ env = ( Hashtable ) env.clone();
+
// Remove properties that can be changed
Object value = env.remove( Context.SECURITY_PRINCIPAL );
if( value == null )
diff --git a/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java b/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
index eb63fc7..e4c5eb7 100644
--- a/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
+++ b/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
@@ -237,6 +237,7 @@
finally
{
environment = null;
+ interceptorChain = null;
configuration = null;
factory.afterShutdown( this );
}
@@ -338,7 +339,7 @@
+ Context.SECURITY_PRINCIPAL + " property is set" );
}
- if( configuration.isAllowAnonymousAccess() )
+ if( !configuration.isAllowAnonymousAccess() )
{
throw new LdapNoPermissionException( "Anonymous access disabled." );
}
diff --git a/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java b/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
index 80fb19d..fea3803 100644
--- a/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
+++ b/core/src/test/org/apache/ldap/server/authn/SimpleAuthenticationTest.java
@@ -181,12 +181,10 @@
{
// clean out the database
tearDown();
- doDelete( new File( "target" + File.separator + "eve" ) );
Hashtable env = new Hashtable( configuration.toJndiEnvironment() );
env.put( Context.SECURITY_AUTHENTICATION, "none" );
configuration.setAllowAnonymousAccess( false );
-
try
{
setSysRoot( env );
@@ -195,8 +193,11 @@
catch( LdapNoPermissionException e )
{
}
+ tearDown();
// ok this should start up the system now as admin
+ env = new Hashtable( configuration.toJndiEnvironment() );
+ env.put( Context.SECURITY_AUTHENTICATION, "none" );
configuration.setAllowAnonymousAccess( true );
InitialLdapContext ctx = ( InitialLdapContext ) setSysRoot( env );