You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2005/06/26 14:49:46 UTC
svn commit: r201848 - in /directory/apacheds/trunk:
core/src/main/java/org/apache/ldap/server/jndi/
main/src/main/java/org/apache/ldap/server/jndi/
Author: akarasulu
Date: Sun Jun 26 05:49:45 2005
New Revision: 201848
URL: http://svn.apache.org/viewcvs?rev=201848&view=rev
Log:
changes ...
o Fixed bug where JNDI environment property for the provider URL was being
changed. This is a big no no for JNDI providers which must preserve the
original objects they are handed by the user.
o Fixed bug where the proper JNDI context was not being given to the Kerberos
protocol provider in the context factory implementation.
o Formatting changes
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/DefaultContextFactoryService.java
directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.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=201848&r1=201847&r2=201848&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 Sun Jun 26 05:49:45 2005
@@ -78,8 +78,6 @@
public final synchronized Context getInitialContext( Hashtable env ) throws NamingException
{
Configuration cfg = Configuration.toConfiguration( env );
- env = ( Hashtable ) env.clone();
-
String principal = getPrincipal( env );
byte[] credential = getCredential( env );
String authentication = getAuthentication( env );
Modified: directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryService.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryService.java?rev=201848&r1=201847&r2=201848&view=diff
==============================================================================
--- directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryService.java (original)
+++ directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/jndi/DefaultContextFactoryService.java Sun Jun 26 05:49:45 2005
@@ -155,14 +155,15 @@
public synchronized void startup( ContextFactoryServiceListener listener, Hashtable env ) throws NamingException
{
+ Hashtable envCopy = ( Hashtable ) env.clone();
+
if( started )
{
return;
}
StartupConfiguration cfg = ( StartupConfiguration ) Configuration.toConfiguration( env );
-
- env.put( Context.PROVIDER_URL, "" );
+ envCopy.put( Context.PROVIDER_URL, "" );
try
{
@@ -175,7 +176,7 @@
throw ne;
}
- this.environment = env;
+ this.environment = envCopy;
this.startupConfiguration = cfg;
listener.beforeStartup( this );
Modified: directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java
URL: http://svn.apache.org/viewcvs/directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java?rev=201848&r1=201847&r2=201848&view=diff
==============================================================================
--- directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java (original)
+++ directory/apacheds/trunk/main/src/main/java/org/apache/ldap/server/jndi/ServerContextFactory.java Sun Jun 26 05:49:45 2005
@@ -24,8 +24,10 @@
import java.util.Properties;
import javax.naming.NamingException;
+import javax.naming.Context;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
+import javax.naming.ldap.LdapContext;
import org.apache.kerberos.protocol.KerberosProtocolProvider;
import org.apache.kerberos.service.KdcConfiguration;
@@ -34,6 +36,7 @@
import org.apache.ldap.common.exception.LdapConfigurationException;
import org.apache.ldap.common.name.LdapName;
import org.apache.ldap.common.util.PropertiesUtils;
+import org.apache.ldap.common.util.NamespaceTools;
import org.apache.ldap.server.configuration.ServerStartupConfiguration;
import org.apache.ldap.server.protocol.LdapProtocolProvider;
import org.apache.mina.common.TransportType;
@@ -132,25 +135,38 @@
}
KdcConfiguration config = new KdcConfiguration( props );
-
int port = PropertiesUtils.get( env, KdcConfiguration.KERBEROS_PORT_KEY, KdcConfiguration.DEFAULT_KERBEROS_PORT );
-
Service service= new Service( "kerberos", TransportType.DATAGRAM, new InetSocketAddress( port ) );
-
- InitialLdapContext ctx = new InitialLdapContext( env, new Control[]{} );
-
+ LdapContext ctx = getBaseRealmContext( config, env );
PrincipalStore store = new JndiPrincipalStoreImpl( ctx, new LdapName( "ou=Users" ) );
try
{
minaRegistry.bind( service, new KerberosProtocolProvider( config, store ) );
-
kerberosService = service;
}
catch ( IOException e )
{
e.printStackTrace();
}
+ }
+
+
+ /**
+ * Maps a Kerberos Realm name to a position within the DIT. The primary realm of
+ * the KDC will use this area for configuration and for storing user entries.
+ *
+ * @param config the KDC's configuration
+ * @param env the JNDI environment properties
+ * @return the base context for the primary realm of the KDC
+ * @throws NamingException
+ */
+ private LdapContext getBaseRealmContext( KdcConfiguration config, Hashtable env ) throws NamingException
+ {
+ Hashtable cloned = ( Hashtable ) env.clone();
+ String dn = NamespaceTools.inferLdapName( config.getPrimaryRealm() );
+ cloned.put( Context.PROVIDER_URL, dn );
+ return new InitialLdapContext( cloned, new Control[]{} );
}