You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2005/06/15 07:51:17 UTC
svn commit: r190710 - in
/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi:
AbstractContextFactory.java ContextFactoryContext.java
DefaultContextFactoryContext.java
Author: trustin
Date: Tue Jun 14 22:51:14 2005
New Revision: 190710
URL: http://svn.apache.org/viewcvs?rev=190710&view=rev
Log:
Fixed: Bind failure via networking layer
I changed the type of credential to byte[], and performed proper conversion between strings and byte[].
Modified:
directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ContextFactoryContext.java
directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java?rev=190710&r1=190709&r2=190710&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/AbstractContextFactory.java Tue Jun 14 22:51:14 2005
@@ -24,6 +24,7 @@
import javax.naming.spi.InitialContextFactory;
import org.apache.ldap.server.configuration.Configuration;
+import org.apache.ldap.server.configuration.ConfigurationException;
import org.apache.ldap.server.configuration.ShutdownConfiguration;
import org.apache.ldap.server.configuration.StartupConfiguration;
import org.apache.ldap.server.configuration.SyncConfiguration;
@@ -65,36 +66,51 @@
public final synchronized Context getInitialContext( Hashtable env ) throws NamingException
{
Configuration cfg = Configuration.toConfiguration( env );
-
- String principal;
- String credential;
- String authentication;
- String providerUrl;
-
env = ( Hashtable ) env.clone();
+
+ String principal = extractPrincipal( env );
+ byte[] credential = extractCredential( env );
+ String authentication = extractAuthentication( env );
+ String providerUrl = extractProviderUrl( env );
- // Remove properties that can be changed
- Object value = env.remove( Context.SECURITY_PRINCIPAL );
- if( value == null )
+ // Execute configuration
+ if( cfg instanceof ShutdownConfiguration )
{
- principal = null;
+ provider.shutdown();
}
- else
+ else if( cfg instanceof SyncConfiguration )
{
- principal = value.toString();
+ provider.sync();
}
-
- value = env.remove( Context.SECURITY_CREDENTIALS );
- if( value == null )
+ else if( cfg instanceof StartupConfiguration )
{
- credential = null;
+ ( ( DefaultContextFactoryContext ) provider ).startup( this, env );
}
else
{
- credential = value.toString();
+ throw new NamingException( "Unknown configuration: " + cfg );
}
- value = env.remove( Context.SECURITY_AUTHENTICATION );
+ return provider.getJndiContext( principal, credential, authentication, providerUrl );
+ }
+
+ private String extractProviderUrl( Hashtable env )
+ {
+ String providerUrl;
+ Object value;
+ value = env.remove( Context.PROVIDER_URL );
+ if( value == null )
+ {
+ value = "";
+ }
+ providerUrl = value.toString();
+ return providerUrl;
+ }
+
+ private String extractAuthentication( Hashtable env )
+ {
+ String authentication;
+ Object value = env.remove( Context.SECURITY_AUTHENTICATION );
if( value == null )
{
authentication = "none";
@@ -103,33 +119,45 @@
{
authentication = value.toString();
}
+ return authentication;
+ }
- value = env.remove( Context.PROVIDER_URL );
+ private byte[] extractCredential( Hashtable env )
+ {
+ byte[] credential;
+ Object value = env.remove( Context.SECURITY_CREDENTIALS );
if( value == null )
{
- value = "";
+ credential = null;
}
- providerUrl = value.toString();
-
- // Execute configuration
- if( cfg instanceof ShutdownConfiguration )
+ else if( value instanceof String )
{
- provider.shutdown();
+ credential = ( ( String ) value ).getBytes();
}
- else if( cfg instanceof SyncConfiguration )
+ else if( value instanceof byte[] )
{
- provider.sync();
+ credential = ( byte[] ) value;
}
- else if( cfg instanceof StartupConfiguration )
+ else
{
- ( ( DefaultContextFactoryContext ) provider ).startup( this, env );
+ throw new ConfigurationException( "Can't convert '" + Context.SECURITY_CREDENTIALS + "' to byte[]." );
+ }
+ return credential;
+ }
+
+ private String extractPrincipal( Hashtable env )
+ {
+ String principal;
+ Object value = env.remove( Context.SECURITY_PRINCIPAL );
+ if( value == null )
+ {
+ principal = null;
}
else
{
- throw new NamingException( "Unknown configuration: " + cfg );
+ principal = value.toString();
}
-
- return provider.getJndiContext( principal, credential, authentication, providerUrl );
+ return principal;
}
protected abstract void beforeStartup( ContextFactoryContext ctx ) throws NamingException;
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ContextFactoryContext.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ContextFactoryContext.java?rev=190710&r1=190709&r2=190710&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ContextFactoryContext.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/ContextFactoryContext.java Tue Jun 14 22:51:14 2005
@@ -66,7 +66,7 @@
boolean isStarted();
Context getJndiContext( String rootDN ) throws NamingException;
- Context getJndiContext( String principal, String credential, String authentication, String rootDN ) throws NamingException;
+ Context getJndiContext( String principal, byte[] credential, String authentication, String rootDN ) throws NamingException;
/**
* Invokes {@link Invocation} to this context.
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java?rev=190710&r1=190709&r2=190710&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryContext.java Tue Jun 14 22:51:14 2005
@@ -136,7 +136,7 @@
return this.getJndiContext( null, null, "none", rootDN );
}
- public synchronized Context getJndiContext( String principal, String credential, String authentication, String rootDN ) throws NamingException
+ public synchronized Context getJndiContext( String principal, byte[] credential, String authentication, String rootDN ) throws NamingException
{
checkSecuritySettings( principal, credential, authentication );
@@ -295,7 +295,7 @@
*
* @throws javax.naming.NamingException if the security settings are not correctly configured.
*/
- private void checkSecuritySettings( String principal, String credential, String authentication ) throws NamingException
+ private void checkSecuritySettings( String principal, byte[] credential, String authentication ) throws NamingException
{
if( authentication == null )
{