directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From seelm...@apache.org
Subject svn commit: r802731 [1/2] - in /directory/studio/trunk: connection-core/src/main/java/org/apache/directory/studio/connection/core/ connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ connection-core/src/main/java/org/apache/di...
Date Mon, 10 Aug 2009 10:56:08 GMT
Author: seelmann
Date: Mon Aug 10 10:56:07 2009
New Revision: 802731

URL: http://svn.apache.org/viewvc?rev=802731&view=rev
Log:
DIRSTUDIO-262 and DIRSTUDIO-62:
o Added SASL parameter: QoP, Protection Strength, Mutual Authentication
o Added GSSAPI authentication



Modified:
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCoreConstants.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePreferencesInitializer.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionParameter.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionIO.java
    directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
    directory/studio/trunk/connection-ui/pom.xml
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/ConnectionsPreferencePage.java
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages.properties
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_de.properties
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_fr.properties
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/AuthenticationParameterPage.java
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages.properties
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_de.properties
    directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/widgets/messages_fr.properties
    directory/studio/trunk/rcp/Studio-Runtime.launch

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCoreConstants.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCoreConstants.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCoreConstants.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCoreConstants.java Mon Aug 10 10:56:07 2009
@@ -68,4 +68,10 @@
     /** The constant used to identify the "masked attributes" preference  */
     public static final String PREFERENCE_MODIFICATIONLOGS_MASKED_ATTRIBUTES = "modificationLogsMaskedAttributes"; //$NON-NLS-1$
 
+    /** The constant used to identify the "use KRB5 system properties" preference  */
+    public static final String PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES = "useKrb5SystemProperties"; //$NON-NLS-1$
+
+    /** The constant used to identify the KRB5 login module class name */
+    public static final String PREFERENCE_KRB5_LOGIN_MODULE = "krb5LoginModule"; //$NON-NLS-1$
+
 }

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePlugin.java Mon Aug 10 10:56:07 2009
@@ -545,4 +545,42 @@
         return defaultLdapContextFactory;
     }
 
+
+    /**
+     * Gets the default KRB5 login module.
+     * 
+     * Right now the following context factories are supported:
+     * <ul>
+     * <li>com.sun.security.auth.module.Krb5LoginModule</li>
+     * <li>org.apache.harmony.auth.module.Krb5LoginModule</li>
+     * </ul>
+     * 
+     * @return the default KRB5 login module
+     */
+    public String getDefaultKrb5LoginModule()
+    {
+        String defaultKrb5LoginModule = ""; //$NON-NLS-1$
+
+        try
+        {
+            String sun = "com.sun.security.auth.module.Krb5LoginModule"; //$NON-NLS-1$
+            Class.forName( sun );
+            defaultKrb5LoginModule = sun;
+        }
+        catch ( ClassNotFoundException e )
+        {
+        }
+        try
+        {
+            String apache = "org.apache.harmony.auth.module.Krb5LoginModule"; //$NON-NLS-1$
+            Class.forName( apache );
+            defaultKrb5LoginModule = apache;
+        }
+        catch ( ClassNotFoundException e )
+        {
+        }
+
+        return defaultKrb5LoginModule;
+    }
+
 }

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePreferencesInitializer.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePreferencesInitializer.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePreferencesInitializer.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionCorePreferencesInitializer.java Mon Aug 10 10:56:07 2009
@@ -40,10 +40,13 @@
     {
         Preferences preferences = ConnectionCorePlugin.getDefault().getPluginPreferences();
 
-        // LDAP context factory
+        // LDAP connection settings
         String defaultLdapContextFactory = ConnectionCorePlugin.getDefault().getDefaultLdapContextFactory();
-        preferences.setDefault( ConnectionCoreConstants.PREFERENCE_VALIDATE_CERTIFICATES, true );
         preferences.setDefault( ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY, defaultLdapContextFactory );
+        preferences.setDefault( ConnectionCoreConstants.PREFERENCE_VALIDATE_CERTIFICATES, true );
+        String defaultKrb5LoginModule = ConnectionCorePlugin.getDefault().getDefaultKrb5LoginModule();
+        preferences.setDefault( ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE, defaultKrb5LoginModule );
+        preferences.setDefault( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES, false );
 
         // Modification Logs
         preferences.setDefault( ConnectionCoreConstants.PREFERENCE_MODIFICATIONLOGS_ENABLE, true );

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionParameter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionParameter.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionParameter.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/ConnectionParameter.java Mon Aug 10 10:56:07 2009
@@ -81,6 +81,26 @@
 
     }
 
+    public enum SaslQop
+    {
+        AUTH, AUTH_INT, AUTH_INT_PRIV
+    }
+
+    public enum SaslSecurityStrength
+    {
+        LOW, MEDIUM, HIGH
+    }
+
+    public enum Krb5CredentialConfiguration
+    {
+        USE_NATIVE, OBTAIN_TGT
+    }
+
+    public enum Krb5Configuration
+    {
+        DEFAULT, FILE, MANUAL
+    }
+
     /** The unique id. */
     private String id;
 
@@ -108,6 +128,33 @@
     /** The SASL realm. */
     private String saslRealm;
 
+    /** The SASL qualitiy of protection. */
+    private SaslQop saslQop = SaslQop.AUTH;
+
+    /** The SASL security strength. */
+    private SaslSecurityStrength saslSecurityStrength = SaslSecurityStrength.HIGH;
+
+    /** The SASL mutual authentication flag. */
+    private boolean saslMutualAuthentication = true;
+
+    /** The Kerberos credential configuration. */
+    private Krb5CredentialConfiguration krb5CredentialConfiguration = Krb5CredentialConfiguration.USE_NATIVE;
+
+    /** The Kerberos configuration. */
+    private Krb5Configuration krb5Configuration = Krb5Configuration.DEFAULT;
+
+    /** The Kerberos configuration file. */
+    private String krb5ConfigurationFile;
+
+    /** The Kerberos realm. */
+    private String krb5Realm;
+
+    /** The Kerberos KDC host. */
+    private String krb5KdcHost;
+
+    /** The Kerberos KDC port. */
+    private int krb5KdcPort = 88;
+
     /** The read only flag. */
     private boolean isReadOnly;
 
@@ -385,6 +432,204 @@
 
 
     /**
+     * Gets the SASL qualitiy of protection.
+     * 
+     * @return the SASL qualitiy of protection
+     */
+    public SaslQop getSaslQop()
+    {
+        return saslQop;
+    }
+
+
+    /**
+     * Sets the SASL qualitiy of protection.
+     * 
+     * @param saslQop the new SASL qualitiy of protection
+     */
+    public void setSaslQop( SaslQop saslQop )
+    {
+        this.saslQop = saslQop;
+    }
+
+
+    /**
+     * Gets the SASL security strength.
+     * 
+     * @return the SASL security strength
+     */
+    public SaslSecurityStrength getSaslSecurityStrength()
+    {
+        return saslSecurityStrength;
+    }
+
+
+    /**
+     * Sets the SASL security strength.
+     * 
+     * @param saslSecurityStrength the new SASL security strength
+     */
+    public void setSaslSecurityStrength( SaslSecurityStrength saslSecurityStrength )
+    {
+        this.saslSecurityStrength = saslSecurityStrength;
+    }
+
+
+    /**
+     * Checks if is SASL mutual authentication.
+     * 
+     * @return true, if is SASL mutual authentication
+     */
+    public boolean isSaslMutualAuthentication()
+    {
+        return saslMutualAuthentication;
+    }
+
+
+    /**
+     * Sets the SASL mutual authentication.
+     * 
+     * @param saslMutualAuthentication the new SASL mutual authentication
+     */
+    public void setSaslMutualAuthentication( boolean saslMutualAuthentication )
+    {
+        this.saslMutualAuthentication = saslMutualAuthentication;
+    }
+
+
+    /**
+     * Gets the Kerberos credential configuration.
+     * 
+     * @return the Kerberos credential configuration
+     */
+    public Krb5CredentialConfiguration getKrb5CredentialConfiguration()
+    {
+        return krb5CredentialConfiguration;
+    }
+
+
+    /**
+     * Sets the Kerberos credential configuration.
+     * 
+     * @param krb5CredentialConfiguration the new Kerberos credential configuration
+     */
+    public void setKrb5CredentialConfiguration( Krb5CredentialConfiguration krb5CredentialConfiguration )
+    {
+        this.krb5CredentialConfiguration = krb5CredentialConfiguration;
+    }
+
+
+    /**
+     * Gets the Kerberos configuration.
+     * 
+     * @return the Kerberos configuration
+     */
+    public Krb5Configuration getKrb5Configuration()
+    {
+        return krb5Configuration;
+    }
+
+
+    /**
+     * Sets the Kerberos configuration.
+     * 
+     * @param krb5Configuration the new Kerberos configuration
+     */
+    public void setKrb5Configuration( Krb5Configuration krb5Configuration )
+    {
+        this.krb5Configuration = krb5Configuration;
+    }
+
+
+    /**
+     * Gets the Kerberos configuration file.
+     * 
+     * @return the Kerberos configuration file
+     */
+    public String getKrb5ConfigurationFile()
+    {
+        return krb5ConfigurationFile;
+    }
+
+
+    /**
+     * Sets the Kerberos configuration file.
+     * 
+     * @param krb5ConfigurationFile the new Kerberos configuration file
+     */
+    public void setKrb5ConfigurationFile( String krb5ConfigurationFile )
+    {
+        this.krb5ConfigurationFile = krb5ConfigurationFile;
+    }
+
+
+    /**
+     * Gets the Kerberos realm.
+     * 
+     * @return the Kerberos realm
+     */
+    public String getKrb5Realm()
+    {
+        return krb5Realm;
+    }
+
+
+    /**
+     * Sets the Kerberos realm.
+     * 
+     * @param krb5Realm the new Kerberos realm
+     */
+    public void setKrb5Realm( String krb5Realm )
+    {
+        this.krb5Realm = krb5Realm;
+    }
+
+
+    /**
+     * Gets the Kerberos KDC host.
+     * 
+     * @return the Kerberos KDC host
+     */
+    public String getKrb5KdcHost()
+    {
+        return krb5KdcHost;
+    }
+
+
+    /**
+     * Sets the Kerberos KDC host.
+     * 
+     * @param krb5KdcHost the new Kerberos KDC host
+     */
+    public void setKrb5KdcHost( String krb5KdcHost )
+    {
+        this.krb5KdcHost = krb5KdcHost;
+    }
+
+
+    /**
+     * Gets the Kerberos KDC port.
+     * 
+     * @return the Kerberos KDCport
+     */
+    public int getKrb5KdcPort()
+    {
+        return krb5KdcPort;
+    }
+
+
+    /**
+     * Sets the Kerberos KDC port.
+     * 
+     * @param krb5KdcPort the new Kerberos KDC port
+     */
+    public void setKrb5KdcPort( int krb5KdcPort )
+    {
+        this.krb5KdcPort = krb5KdcPort;
+    }
+
+
+    /**
      * Gets the extended properties.
      * 
      * @return the extended properties

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionIO.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionIO.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionIO.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/ConnectionIO.java Mon Aug 10 10:56:07 2009
@@ -33,6 +33,10 @@
 import org.apache.directory.studio.connection.core.ConnectionParameter;
 import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
 import org.apache.directory.studio.connection.core.ConnectionParameter.EncryptionMethod;
+import org.apache.directory.studio.connection.core.ConnectionParameter.Krb5Configuration;
+import org.apache.directory.studio.connection.core.ConnectionParameter.Krb5CredentialConfiguration;
+import org.apache.directory.studio.connection.core.ConnectionParameter.SaslQop;
+import org.apache.directory.studio.connection.core.ConnectionParameter.SaslSecurityStrength;
 import org.dom4j.Attribute;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
@@ -62,6 +66,17 @@
     private static final String AUTH_METHOD_TAG = "authMethod"; //$NON-NLS-1$
     private static final String BIND_PRINCIPAL_TAG = "bindPrincipal"; //$NON-NLS-1$
     private static final String BIND_PASSWORD_TAG = "bindPassword"; //$NON-NLS-1$
+    private static final String SASL_REALM_TAG = "saslRealm"; //$NON-NLS-1$
+    private static final String SASL_QOP_TAG = "saslQop"; //$NON-NLS-1$
+    private static final String SASL_SEC_STRENGTH_TAG = "saslSecStrenght"; //$NON-NLS-1$
+    private static final String SASL_MUTUAL_AUTH_TAG = "saslMutualAuth"; //$NON-NLS-1$
+    private static final String KRB5_CREDENTIALS_CONF_TAG = "krb5CredentialsConf"; //$NON-NLS-1$
+    private static final String KRB5_CONFIG_TAG = "krb5Config"; //$NON-NLS-1$
+    private static final String KRB5_CONFIG_FILE_TAG = "krb5ConfigFile"; //$NON-NLS-1$
+    private static final String KRB5_REALM_TAG = "krb5Realm"; //$NON-NLS-1$
+    private static final String KRB5_KDC_HOST_TAG = "krb5KdcHost"; //$NON-NLS-1$
+    private static final String KRB5_KDC_PORT_TAG = "krb5KdcPort"; //$NON-NLS-1$
+
     private static final String EXTENDED_PROPERTIES_TAG = "extendedProperties"; //$NON-NLS-1$
     private static final String EXTENDED_PROPERTY_TAG = "extendedProperty"; //$NON-NLS-1$
     private static final String KEY_TAG = "key"; //$NON-NLS-1$
@@ -72,6 +87,7 @@
     private static final String SUB_FOLDERS_TAG = "subFolders"; //$NON-NLS-1$
     private static final String SUB_FOLDER_TAG = "subFolder"; //$NON-NLS-1$
 
+
     /**
      * Loads the connections using the reader
      *
@@ -210,6 +226,77 @@
             connection.setBindPassword( bindPasswordAttribute.getValue() );
         }
 
+        // SASL Realm
+        Attribute saslRealmAttribute = element.attribute( SASL_REALM_TAG );
+        if ( saslRealmAttribute != null )
+        {
+            connection.setSaslRealm( saslRealmAttribute.getValue() );
+        }
+
+        // SASL Quality of Protection
+        Attribute saslQopAttribute = element.attribute( SASL_QOP_TAG );
+        if ( saslQopAttribute != null )
+        {
+            connection.setSaslQop( SaslQop.valueOf( saslQopAttribute.getValue() ) );
+        }
+
+        // SASL Security Strength
+        Attribute saslSecStrengthAttribute = element.attribute( SASL_SEC_STRENGTH_TAG );
+        if ( saslSecStrengthAttribute != null )
+        {
+            connection.setSaslSecurityStrength( SaslSecurityStrength.valueOf( saslSecStrengthAttribute.getValue() ) );
+        }
+
+        // SASL Mutual Authentication
+        Attribute saslMutualAuthAttribute = element.attribute( SASL_MUTUAL_AUTH_TAG );
+        if ( saslMutualAuthAttribute != null )
+        {
+            connection.setSaslMutualAuthentication( Boolean.parseBoolean( saslMutualAuthAttribute.getValue() ) );
+        }
+
+        // KRB5 Credentials Conf
+        Attribute krb5CredentialsConf = element.attribute( KRB5_CREDENTIALS_CONF_TAG );
+        if ( krb5CredentialsConf != null )
+        {
+            connection.setKrb5CredentialConfiguration( Krb5CredentialConfiguration.valueOf( krb5CredentialsConf
+                .getValue() ) );
+        }
+
+        // KRB5 Configuration
+        Attribute krb5Config = element.attribute( KRB5_CONFIG_TAG );
+        if ( krb5Config != null )
+        {
+            connection.setKrb5Configuration( Krb5Configuration.valueOf( krb5Config.getValue() ) );
+        }
+
+        // KRB5 Configuration File
+        Attribute krb5ConfigFile = element.attribute( KRB5_CONFIG_FILE_TAG );
+        if ( krb5ConfigFile != null )
+        {
+            connection.setKrb5ConfigurationFile( krb5ConfigFile.getValue() );
+        }
+
+        // KRB5 REALM
+        Attribute krb5Realm = element.attribute( KRB5_REALM_TAG );
+        if ( krb5Realm != null )
+        {
+            connection.setKrb5Realm( krb5Realm.getValue() );
+        }
+
+        // KRB5 KDC Host
+        Attribute krb5KdcHost = element.attribute( KRB5_KDC_HOST_TAG );
+        if ( krb5KdcHost != null )
+        {
+            connection.setKrb5KdcHost( krb5KdcHost.getValue() );
+        }
+
+        // KRB5 KDC Port
+        Attribute krb5KdcPort = element.attribute( KRB5_KDC_PORT_TAG );
+        if ( krb5KdcPort != null )
+        {
+            connection.setKrb5KdcPort( Integer.valueOf( krb5KdcPort.getValue() ) );
+        }
+
         // Extended Properties
         Element extendedPropertiesElement = element.element( EXTENDED_PROPERTIES_TAG );
         if ( extendedPropertiesElement != null )
@@ -303,6 +390,37 @@
         // Bind Password
         connectionElement.addAttribute( BIND_PASSWORD_TAG, connection.getBindPassword() );
 
+        // SASL Realm
+        connectionElement.addAttribute( SASL_REALM_TAG, connection.getSaslRealm() );
+
+        // SASL Quality of Protection
+        connectionElement.addAttribute( SASL_QOP_TAG, connection.getSaslQop().toString() );
+        
+        // SASL Security Strength
+        connectionElement.addAttribute( SASL_SEC_STRENGTH_TAG, connection.getSaslSecurityStrength().toString() );
+
+        // SASL Mutual Authentication
+        connectionElement.addAttribute( SASL_MUTUAL_AUTH_TAG, "" + connection.isSaslMutualAuthentication() ); //$NON-NLS-1$
+
+        // KRB5 Credentials Conf
+        connectionElement.addAttribute( KRB5_CREDENTIALS_CONF_TAG, connection.getKrb5CredentialConfiguration()
+            .toString() );
+
+        // KRB5 Configuration
+        connectionElement.addAttribute( KRB5_CONFIG_TAG, connection.getKrb5Configuration().toString() );
+
+        // KRB5 Configuration File
+        connectionElement.addAttribute( KRB5_CONFIG_FILE_TAG, connection.getKrb5ConfigurationFile() );
+
+        // KRB5 REALM
+        connectionElement.addAttribute( KRB5_REALM_TAG, connection.getKrb5Realm() );
+
+        // KRB5 KDC Host
+        connectionElement.addAttribute( KRB5_KDC_HOST_TAG, connection.getKrb5KdcHost() );
+
+        // KRB5 KDC Port
+        connectionElement.addAttribute( KRB5_KDC_PORT_TAG, "" + connection.getKrb5KdcPort() ); //$NON-NLS-1$
+
         // Extended Properties
         Element extendedPropertiesElement = connectionElement.addElement( EXTENDED_PROPERTIES_TAG );
         Map<String, String> extendedProperties = connection.getExtendedProperties();
@@ -414,9 +532,9 @@
             for ( Iterator<?> i = foldersElement.elementIterator( SUB_FOLDER_TAG ); i.hasNext(); )
             {
                 Element folderElement = ( Element ) i.next();
-                
+
                 Attribute folderIdAttribute = folderElement.attribute( ID_TAG );
-                
+
                 if ( folderIdAttribute != null )
                 {
                     connectionFolder.addSubFolderId( folderIdAttribute.getValue() );
@@ -438,7 +556,8 @@
      * @throws IOException
      *      if an I/O error occurs
      */
-    public static void saveConnectionFolders( Set<ConnectionFolder> connectionFolders, OutputStream stream ) throws IOException
+    public static void saveConnectionFolders( Set<ConnectionFolder> connectionFolders, OutputStream stream )
+        throws IOException
     {
         // Creating the Document
         Document document = DocumentHelper.createDocument();
@@ -488,7 +607,7 @@
             Element connectionElement = connectionsElement.addElement( CONNECTION_TAG );
             connectionElement.addAttribute( ID_TAG, connectionId );
         }
-        
+
         // Sub-folders
         Element foldersElement = connectionFolderElement.addElement( SUB_FOLDERS_TAG );
         for ( String folderId : connectionFolder.getSubFolderIds() )

Modified: directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java (original)
+++ directory/studio/trunk/connection-core/src/main/java/org/apache/directory/studio/connection/core/io/jndi/JNDIConnectionWrapper.java Mon Aug 10 10:56:07 2009
@@ -20,7 +20,11 @@
 package org.apache.directory.studio.connection.core.io.jndi;
 
 
+import java.io.File;
+import java.io.IOException;
+import java.security.PrivilegedAction;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
 
@@ -48,7 +52,19 @@
 import javax.naming.ldap.StartTlsResponse;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.SSLSession;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.NameCallback;
+import javax.security.auth.callback.PasswordCallback;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import javax.security.auth.login.AppConfigurationEntry;
+import javax.security.auth.login.Configuration;
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.login.LoginException;
+import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.directory.shared.ldap.codec.util.LdapURLEncodingException;
 import org.apache.directory.shared.ldap.name.LdapDN;
@@ -63,8 +79,10 @@
 import org.apache.directory.studio.connection.core.IJndiLogger;
 import org.apache.directory.studio.connection.core.IReferralHandler;
 import org.apache.directory.studio.connection.core.Messages;
+import org.apache.directory.studio.connection.core.Utils;
 import org.apache.directory.studio.connection.core.Connection.AliasDereferencingMethod;
 import org.apache.directory.studio.connection.core.Connection.ReferralHandlingMethod;
+import org.apache.directory.studio.connection.core.ConnectionParameter.AuthenticationMethod;
 import org.apache.directory.studio.connection.core.event.ConnectionEventRegistry;
 import org.apache.directory.studio.connection.core.io.ConnectionWrapper;
 import org.apache.directory.studio.connection.core.io.jndi.ReferralsInfo.UrlAndDn;
@@ -838,7 +856,8 @@
 
         environment = new Hashtable<String, String>();
         Preferences preferences = ConnectionCorePlugin.getDefault().getPluginPreferences();
-        final boolean validateCertificates = preferences.getBoolean( ConnectionCoreConstants.PREFERENCE_VALIDATE_CERTIFICATES );
+        final boolean validateCertificates = preferences
+            .getBoolean( ConnectionCoreConstants.PREFERENCE_VALIDATE_CERTIFICATES );
         String ldapCtxFactory = preferences.getString( ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY );
         environment.put( Context.INITIAL_CONTEXT_FACTORY, ldapCtxFactory );
         environment.put( JAVA_NAMING_LDAP_VERSION, "3" ); //$NON-NLS-1$
@@ -997,16 +1016,72 @@
                         context.removeFromEnvironment( Context.SECURITY_CREDENTIALS );
                         context.removeFromEnvironment( JAVA_NAMING_SECURITY_SASL_REALM );
 
-                        context.addToEnvironment( Context.SECURITY_PRINCIPAL, bindPrincipal );
-                        context.addToEnvironment( Context.SECURITY_CREDENTIALS, bindCredentials );
                         context.addToEnvironment( Context.SECURITY_AUTHENTICATION, authMethod );
 
-                        if ( connection.getConnectionParameter().getAuthMethod() == ConnectionParameter.AuthenticationMethod.SASL_DIGEST_MD5
-                            && StringUtils.isNotEmpty( saslRealm ) )
+                        // SASL options
+                        if ( connection.getConnectionParameter().getAuthMethod() == AuthenticationMethod.SASL_CRAM_MD5
+                            || connection.getConnectionParameter().getAuthMethod() == AuthenticationMethod.SASL_DIGEST_MD5
+                            || connection.getConnectionParameter().getAuthMethod() == AuthenticationMethod.SASL_GSSAPI )
                         {
-                            context.addToEnvironment( JAVA_NAMING_SECURITY_SASL_REALM, saslRealm );
+                            // Request quality of protection
+                            switch ( connection.getConnectionParameter().getSaslQop() )
+                            {
+                                case AUTH:
+                                    context.addToEnvironment( "javax.security.sasl.qop", "auth" );
+                                    break;
+                                case AUTH_INT:
+                                    context.addToEnvironment( "javax.security.sasl.qop", "auth-int" );
+                                    break;
+                                case AUTH_INT_PRIV:
+                                    context.addToEnvironment( "javax.security.sasl.qop", "auth-conf" );
+                                    break;
+                            }
+
+                            // Request mutual authentication
+                            if ( connection.getConnectionParameter().isSaslMutualAuthentication() )
+                            {
+                                context.addToEnvironment( "javax.security.sasl.server.authentication", "true" );
+                            }
+                            else
+                            {
+                                context.removeFromEnvironment( "javax.security.sasl.server.authentication" );
+                            }
+
+                            // Request cryptographic protection strength
+                            switch ( connection.getConnectionParameter().getSaslSecurityStrength() )
+                            {
+                                case HIGH:
+                                    context.addToEnvironment( "javax.security.sasl.strength", "high" );
+                                    break;
+                                case MEDIUM:
+                                    context.addToEnvironment( "javax.security.sasl.strength", "medium" );
+                                    break;
+                                case LOW:
+                                    context.addToEnvironment( "javax.security.sasl.strength", "low" );
+                                    break;
+                            }
+                        }
+
+                        // Bind
+                        if ( connection.getConnectionParameter().getAuthMethod() == ConnectionParameter.AuthenticationMethod.SASL_GSSAPI )
+                        {
+                            // GSSAPI
+                            doGssapiBind( this );
+                        }
+                        else
+                        {
+                            // no GSSAPI
+                            context.addToEnvironment( Context.SECURITY_PRINCIPAL, bindPrincipal );
+                            context.addToEnvironment( Context.SECURITY_CREDENTIALS, bindCredentials );
+
+                            if ( connection.getConnectionParameter().getAuthMethod() == ConnectionParameter.AuthenticationMethod.SASL_DIGEST_MD5
+                                && StringUtils.isNotEmpty( saslRealm ) )
+                            {
+                                context.addToEnvironment( JAVA_NAMING_SECURITY_SASL_REALM, saslRealm );
+                            }
+
+                            context.reconnect( context.getConnectControls() );
                         }
-                        context.reconnect( context.getConnectControls() );
                     }
                     catch ( NamingException ne )
                     {
@@ -1029,7 +1104,6 @@
             {
                 throw new NamingException( "???" ); //$NON-NLS-1$
             }
-
         }
         else
         {
@@ -1038,6 +1112,105 @@
     }
 
 
+    private void doGssapiBind( final InnerRunnable innerRunnable ) throws NamingException
+    {
+        File configFile = null;
+        try
+        {
+            Preferences preferences = ConnectionCorePlugin.getDefault().getPluginPreferences();
+            boolean useKrb5SystemProperties = preferences
+                .getBoolean( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES );
+            String krb5LoginModule = preferences.getString( ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE );
+
+            if ( !useKrb5SystemProperties )
+            {
+
+                // Kerberos Configuration
+                switch ( connection.getConnectionParameter().getKrb5Configuration() )
+                {
+                    case DEFAULT:
+                        // nothing 
+                        System.clearProperty( "java.security.krb5.conf" );
+                        break;
+                    case FILE:
+                        // use specified krb5.conf
+                        System.setProperty( "java.security.krb5.conf", connection.getConnectionParameter()
+                            .getKrb5ConfigurationFile() );
+                        break;
+                    case MANUAL:
+                        // write manual config parameters to connection specific krb5.conf file
+                        String fileName = Utils.getFilenameString( connection.getId() ) + ".krb5.conf";
+                        configFile = ConnectionCorePlugin.getDefault().getStateLocation().append( fileName ).toFile();
+                        String realm = connection.getConnectionParameter().getKrb5Realm();
+                        String host = connection.getConnectionParameter().getKrb5KdcHost();
+                        int port = connection.getConnectionParameter().getKrb5KdcPort();
+                        StringBuilder sb = new StringBuilder();
+                        sb.append( "[libdefaults]" ).append( ConnectionCoreConstants.LINE_SEPARATOR );
+                        sb.append( "default_realm = " ).append( realm ).append( ConnectionCoreConstants.LINE_SEPARATOR );
+                        sb.append( "[realms]" ).append( ConnectionCoreConstants.LINE_SEPARATOR );
+                        sb.append( realm ).append( " = {" ).append( ConnectionCoreConstants.LINE_SEPARATOR );
+                        sb.append( "kdc = " ).append( host ).append( ":" ).append( port ).append(
+                            ConnectionCoreConstants.LINE_SEPARATOR );
+                        sb.append( "}" ).append( ConnectionCoreConstants.LINE_SEPARATOR );
+                        try
+                        {
+                            FileUtils.writeStringToFile( configFile, sb.toString() );
+                        }
+                        catch ( IOException ioe )
+                        {
+                            NamingException ne = new NamingException();
+                            ne.setRootCause( ioe );
+                            throw ne;
+                        }
+                        System.setProperty( "java.security.krb5.conf", configFile.getAbsolutePath() );
+                }
+
+                // Use our custom configuration so we don't need to mess with external configuration
+                Configuration.setConfiguration( new InnerConfiguration( krb5LoginModule ) );
+            }
+
+            // Gets the TGT, either from native ticket cache or obtain new from KDC
+            LoginContext lc = null;
+            try
+            {
+                lc = new LoginContext( this.getClass().getName(), new InnerCallbackHandler() );
+                lc.login();
+            }
+            catch ( LoginException le )
+            {
+                NamingException ne = new NamingException();
+                ne.setRootCause( le );
+                throw ne;
+            }
+
+            // Login to LDAP server, obtains a service ticket from KDC
+            Subject.doAs( lc.getSubject(), new PrivilegedAction<Object>()
+            {
+                public Object run()
+                {
+                    try
+                    {
+                        context.reconnect( context.getConnectControls() );
+                    }
+                    catch ( NamingException ne )
+                    {
+                        innerRunnable.namingException = ne;
+                    }
+                    return null;
+                }
+            } );
+        }
+        finally
+        {
+            // delete temporary config file
+            if ( configFile != null && configFile.exists() )
+            {
+                configFile.delete();
+            }
+        }
+    }
+
+
     private void checkConnectionAndRunAndMonitor( final InnerRunnable runnable, final StudioProgressMonitor monitor )
         throws NamingException
     {
@@ -1139,6 +1312,77 @@
         }
     }
 
+    private final class InnerConfiguration extends Configuration
+    {
+        private String krb5LoginModule;
+        private AppConfigurationEntry[] configList = null;
+
+
+        public InnerConfiguration( String krb5LoginModule )
+        {
+            this.krb5LoginModule = krb5LoginModule;
+        }
+
+
+        public AppConfigurationEntry[] getAppConfigurationEntry( String applicationName )
+        {
+            if ( configList == null )
+            {
+                HashMap<String, Object> options = new HashMap<String, Object>();
+
+                // TODO: this only works for Sun JVM
+                options.put( "refreshKrb5Config", "true" );
+                switch ( connection.getConnectionParameter().getKrb5CredentialConfiguration() )
+                {
+                    case USE_NATIVE:
+                        options.put( "useTicketCache", "true" );
+                        options.put( "doNotPrompt", "true" );
+                        break;
+                    case OBTAIN_TGT:
+                        options.put( "doNotPrompt", "false" );
+                        break;
+                }
+
+                configList = new AppConfigurationEntry[1];
+                configList[0] = new AppConfigurationEntry( krb5LoginModule, LoginModuleControlFlag.REQUIRED, options );
+            }
+            return configList;
+        }
+
+
+        public void refresh()
+        {
+        }
+    }
+
+    private final class InnerCallbackHandler implements CallbackHandler
+    {
+        public void handle( Callback[] callbacks ) throws UnsupportedCallbackException, IOException
+        {
+            for ( int ii = 0; ii < callbacks.length; ii++ )
+            {
+                Callback callBack = callbacks[ii];
+
+                if ( callBack instanceof NameCallback )
+                {
+                    // Handles username callback.
+                    NameCallback nameCallback = ( NameCallback ) callBack;
+                    nameCallback.setName( bindPrincipal );
+                }
+                else if ( callBack instanceof PasswordCallback )
+                {
+                    // Handles password callback.
+                    PasswordCallback passwordCallback = ( PasswordCallback ) callBack;
+                    passwordCallback.setPassword( bindCredentials.toCharArray() );
+                }
+                else
+                {
+                    throw new UnsupportedCallbackException( callBack, "Callback not supported" );
+                }
+            }
+        }
+    }
+
     abstract class InnerRunnable implements Runnable
     {
         protected StudioNamingEnumeration namingEnumeration = null;

Modified: directory/studio/trunk/connection-ui/pom.xml
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/pom.xml?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/pom.xml (original)
+++ directory/studio/trunk/connection-ui/pom.xml Mon Aug 10 10:56:07 2009
@@ -114,6 +114,7 @@
             <Eclipse-LazyStart>true</Eclipse-LazyStart>
             <Bundle-Activator>org.apache.directory.studio.connection.ui.ConnectionUIPlugin</Bundle-Activator>
             <Require-Bundle>org.eclipse.ui,
+ org.eclipse.ui.forms,
  org.eclipse.core.runtime,
  org.eclipse.ui.workbench.texteditor,
  org.apache.directory.studio.jars,
@@ -219,6 +220,11 @@
       <artifactId>editors</artifactId>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.eclipse.ui</groupId>
+      <artifactId>forms</artifactId>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/ConnectionsPreferencePage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/ConnectionsPreferencePage.java?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/ConnectionsPreferencePage.java (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/ConnectionsPreferencePage.java Mon Aug 10 10:56:07 2009
@@ -28,9 +28,13 @@
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
@@ -45,7 +49,11 @@
 public class ConnectionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
 {
 
-    private Text jndiLdapContextProvider;
+    private Text ldapContextFactoryText;
+    private Button useKrb5SystemPropertiesButton;
+    private Label krb5LoginModuleNoteLabel;
+    private Text krb5LoginModuleText;
+    private Label krb5LoginModuleLabel;
 
 
     /**
@@ -77,30 +85,72 @@
         BaseWidgetUtils.createSpacer( composite, 1 );
         BaseWidgetUtils.createSpacer( composite, 1 );
 
-        Group group = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite, 1, 1 ), Messages
-            .getString( "ConnectionsPreferencePage.ContextProvider" ), 1 ); //$NON-NLS-1$
-
+        Group ldapContextFactoryGroup = BaseWidgetUtils.createGroup( BaseWidgetUtils.createColumnContainer( composite,
+            1, 1 ), Messages.getString( "ConnectionsPreferencePage.ContextFactory" ), 1 ); //$NON-NLS-1$
         Preferences preferences = ConnectionCorePlugin.getDefault().getPluginPreferences();
         String ldapCtxFactory = preferences.getString( ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY );
         String defaultLdapCtxFactory = preferences
             .getDefaultString( ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY );
-        String note = NLS.bind(
-            Messages.getString( "ConnectionsPreferencePage.SystemDetectedContextFactory" ), defaultLdapCtxFactory ); //$NON-NLS-1$
-
-        jndiLdapContextProvider = BaseWidgetUtils.createText( group, ldapCtxFactory, 1 );
-        BaseWidgetUtils.createWrappedLabel( group, note, 1 );
+        String ldapCtxFactoryNote = NLS.bind( Messages
+            .getString( "ConnectionsPreferencePage.SystemDetectedContextFactory" ), defaultLdapCtxFactory ); //$NON-NLS-1$
+        ldapContextFactoryText = BaseWidgetUtils.createText( ldapContextFactoryGroup, ldapCtxFactory, 1 );
+        BaseWidgetUtils.createWrappedLabel( ldapContextFactoryGroup, ldapCtxFactoryNote, 1 );
+
+        Group krb5SettingsGroup = BaseWidgetUtils.createGroup(
+            BaseWidgetUtils.createColumnContainer( composite, 1, 1 ), Messages
+                .getString( "ConnectionsPreferencePage.Krb5Settings" ), 1 ); //$NON-NLS-1$
+
+        boolean useKrb5SystemProperties = preferences
+            .getBoolean( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES );
+        useKrb5SystemPropertiesButton = BaseWidgetUtils.createCheckbox( krb5SettingsGroup, Messages
+            .getString( "ConnectionsPreferencePage.UseKrb5SystemProperties" ), 1 ); //$NON-NLS-1$
+        useKrb5SystemPropertiesButton.setToolTipText( Messages
+            .getString( "ConnectionsPreferencePage.UseKrb5SystemPropertiesTooltip" ) ); //$NON-NLS-1$
+        useKrb5SystemPropertiesButton.setSelection( useKrb5SystemProperties );
+
+        krb5LoginModuleLabel = BaseWidgetUtils.createLabel( krb5SettingsGroup, Messages
+            .getString( "ConnectionsPreferencePage.Krb5LoginModule" ), 1 );
+        String krb5LoginModule = preferences.getString( ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE );
+        String defaultKrb5LoginModule = preferences
+            .getDefaultString( ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE );
+        String krb5LoginModuleNote = NLS.bind( Messages
+            .getString( "ConnectionsPreferencePage.SystemDetectedContextFactory" ), defaultKrb5LoginModule ); //$NON-NLS-1$
+        krb5LoginModuleText = BaseWidgetUtils.createText( krb5SettingsGroup, krb5LoginModule, 1 );
+        krb5LoginModuleNoteLabel = BaseWidgetUtils.createWrappedLabel( krb5SettingsGroup, krb5LoginModuleNote, 1 );
+
+        useKrb5SystemPropertiesButton.addSelectionListener( new SelectionAdapter()
+        {
+            public void widgetSelected( SelectionEvent e )
+            {
+                validate();
+            }
+        } );
 
+        validate();
+        
         return composite;
     }
 
 
+    private void validate()
+    {
+        krb5LoginModuleLabel.setEnabled( !useKrb5SystemPropertiesButton.getSelection() );
+        krb5LoginModuleText.setEnabled( !useKrb5SystemPropertiesButton.getSelection() );
+        krb5LoginModuleNoteLabel.setEnabled( !useKrb5SystemPropertiesButton.getSelection() );
+    }
+
+
     /**
      * {@inheritDoc}
      */
     protected void performDefaults()
     {
-        jndiLdapContextProvider.setText( ConnectionCorePlugin.getDefault().getPluginPreferences().getDefaultString(
+        ldapContextFactoryText.setText( ConnectionCorePlugin.getDefault().getPluginPreferences().getDefaultString(
             ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY ) );
+        krb5LoginModuleText.setText( ConnectionCorePlugin.getDefault().getPluginPreferences().getDefaultString(
+            ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE ) );
+        useKrb5SystemPropertiesButton.setSelection( ConnectionCorePlugin.getDefault().getPluginPreferences()
+            .getDefaultBoolean( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES ) );
         super.performDefaults();
     }
 
@@ -111,7 +161,12 @@
     public boolean performOk()
     {
         ConnectionCorePlugin.getDefault().getPluginPreferences().setValue(
-            ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY, jndiLdapContextProvider.getText() );
+            ConnectionCoreConstants.PREFERENCE_LDAP_CONTEXT_FACTORY, ldapContextFactoryText.getText() );
+        ConnectionCorePlugin.getDefault().getPluginPreferences().setValue(
+            ConnectionCoreConstants.PREFERENCE_KRB5_LOGIN_MODULE, krb5LoginModuleText.getText() );
+        ConnectionCorePlugin.getDefault().getPluginPreferences()
+            .setValue( ConnectionCoreConstants.PREFERENCE_USE_KRB5_SYSTEM_PROPERTIES,
+                useKrb5SystemPropertiesButton.getSelection() );
         return true;
     }
 

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages.properties Mon Aug 10 10:56:07 2009
@@ -16,8 +16,12 @@
 # under the License.
 ConnectionsPreferencePage.Connections=Connections
 ConnectionsPreferencePage.GeneralSettings=General settings for LDAP connections:
-ConnectionsPreferencePage.ContextProvider=JNDI LDAP context provider
+ConnectionsPreferencePage.ContextFactory=JNDI LDAP context factory
 ConnectionsPreferencePage.SystemDetectedContextFactory=Note: The system detected ''{0}''.
+ConnectionsPreferencePage.Krb5Settings=Kerberos Settings
+ConnectionsPreferencePage.UseKrb5SystemProperties=Use Kerberos System Properties
+ConnectionsPreferencePage.UseKrb5SystemPropertiesTooltip=If enabled you need to configure Kerberos (GSSAPI) authentication using system properties, see http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html for details.
+ConnectionsPreferencePage.Krb5LoginModule=Kerberos Login Module:
 
 CertificateValidationPreferencePage.CertificateValidation=Certificate Validation
 CertificateValidationPreferencePage.ValidateCertificates=Validate certificates for secure LDAP connections

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_de.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_de.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_de.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_de.properties Mon Aug 10 10:56:07 2009
@@ -22,6 +22,10 @@
 CertificateValidationPreferencePage.ValidateCertificates  = Zertifikate f\u00FCr sichere LDAP Verbindungen validieren
 
 ConnectionsPreferencePage.Connections                  = Verbindungen
-ConnectionsPreferencePage.ContextProvider              = JNDI LDAP Context Provider
+ConnectionsPreferencePage.ContextFactory               = JNDI LDAP Context Factory
 ConnectionsPreferencePage.GeneralSettings              = Allgemeine Einstellungen f\u00FCr LDAP Verbindungen:
 ConnectionsPreferencePage.SystemDetectedContextFactory = Hinweis: Das System hat ''{0}'' ermittelt.
+ConnectionsPreferencePage.Krb5Settings=Kerberos Einstellungen
+ConnectionsPreferencePage.UseKrb5SystemProperties=Benutze Kerberos System Properties
+ConnectionsPreferencePage.UseKrb5SystemPropertiesTooltip=Wenn aktiviert muss die Kerberos (GSSAPI) Konfiguration \u00FCber System Properties erfolgen, siehe http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html.
+ConnectionsPreferencePage.Krb5LoginModule=Kerberos Login Modul:

Modified: directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_fr.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_fr.properties?rev=802731&r1=802730&r2=802731&view=diff
==============================================================================
--- directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_fr.properties (original)
+++ directory/studio/trunk/connection-ui/src/main/java/org/apache/directory/studio/connection/ui/preferences/messages_fr.properties Mon Aug 10 10:56:07 2009
@@ -22,6 +22,10 @@
 CertificateValidationPreferencePage.ValidateCertificates  = Valider les certificats des connexions LDAP s\u00E9curis\u00E9es
 
 ConnectionsPreferencePage.Connections                  = Connexions
-ConnectionsPreferencePage.ContextProvider              = Fournisseur de contexte JNDI LDAP
+ConnectionsPreferencePage.ContextFactory               = Fournisseur de contexte JNDI LDAP
 ConnectionsPreferencePage.GeneralSettings              = R\u00E9glages g\u00E9n\u00E9raux pour les connexions LDAP:
 ConnectionsPreferencePage.SystemDetectedContextFactory = Note: Le syst\u00E8me a d\u00E9tect\u00E9 ''{0}''.
+ConnectionsPreferencePage.Krb5Settings=TODO:Kerberos Settings
+ConnectionsPreferencePage.UseKrb5SystemProperties=TODO:Use Kerberos System Properties
+ConnectionsPreferencePage.UseKrb5SystemPropertiesTooltip=TODO:If enabled you need to configure Kerberos (GSSAPI) authentication using system properties, see http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html for details.
+ConnectionsPreferencePage.Krb5LoginModule=TODO:Kerberos Login Module:



Mime
View raw message