You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2011/11/08 18:16:56 UTC

svn commit: r1199349 - /directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java

Author: pamarcelot
Date: Tue Nov  8 17:16:55 2011
New Revision: 1199349

URL: http://svn.apache.org/viewvc?rev=1199349&view=rev
Log:
Added the possibility to enable/disable/edit the supported authentication mechanisms.

Modified:
    directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java

Modified: directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java?rev=1199349&r1=1199348&r2=1199349&view=diff
==============================================================================
--- directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java (original)
+++ directory/studio/trunk/plugins/apacheds.configuration.v2/src/main/java/org/apache/directory/studio/apacheds/configuration/v2/editor/LdapLdapsServersPage.java Tue Nov  8 17:16:55 2011
@@ -20,9 +20,13 @@
 package org.apache.directory.studio.apacheds.configuration.v2.editor;
 
 
+import java.util.List;
+
 import org.apache.directory.server.config.beans.DirectoryServiceBean;
 import org.apache.directory.server.config.beans.LdapServerBean;
+import org.apache.directory.server.config.beans.SaslMechHandlerBean;
 import org.apache.directory.server.config.beans.TransportBean;
+import org.apache.directory.shared.ldap.model.constants.SupportedSaslMechanisms;
 import org.apache.directory.shared.ldap.model.exception.LdapInvalidDnException;
 import org.apache.directory.shared.ldap.model.name.Dn;
 import org.eclipse.swt.SWT;
@@ -51,14 +55,11 @@ import org.eclipse.ui.forms.widgets.Tabl
 public class LdapLdapsServersPage extends ServerConfigurationEditorPage
 {
     private static final String DEFAULT_ADDRESS = "0.0.0.0";
-
     private static final int DEFAULT_PORT_LDAPS = 10636;
-
     private static final int DEFAULT_PORT_LDAP = 10389;
-
     private static final String TRANSPORT_ID_LDAP = "ldap";
-
     private static final String TRANSPORT_ID_LDAPS = "ldaps";
+    private static final String SASL_MECHANISMS_SIMPLE = "SIMPLE";
 
     /** The Page ID*/
     public static final String ID = LdapLdapsServersPage.class.getName(); //$NON-NLS-1$
@@ -78,7 +79,9 @@ public class LdapLdapsServersPage extend
     private Button authMechDigestMd5Checkbox;
     private Button authMechGssapiCheckbox;
     private Button authMechNtlmCheckbox;
+    private Text authMechNtlmText;
     private Button authMechGssSpnegoCheckbox;
+    private Text authMechGssSpnegoText;
     private Text saslHostText;
     private Text saslPrincipalText;
     private Text saslSearchBaseDnText;
@@ -145,6 +148,71 @@ public class LdapLdapsServersPage extend
             }
         }
     };
+    private SelectionAdapter authMechSimpleCheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SASL_MECHANISMS_SIMPLE, authMechSimpleCheckbox.getSelection() );
+        };
+    };
+    private SelectionAdapter authMechGssapiCheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SupportedSaslMechanisms.GSSAPI,
+                authMechGssapiCheckbox.getSelection() );
+        };
+    };
+    private SelectionAdapter authMechCramMd5CheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SupportedSaslMechanisms.CRAM_MD5,
+                authMechCramMd5Checkbox.getSelection() );
+        };
+    };
+    private SelectionAdapter authMechDigestMd5CheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SupportedSaslMechanisms.DIGEST_MD5,
+                authMechDigestMd5Checkbox.getSelection() );
+        };
+    };
+    private SelectionAdapter authMechGssSpnegoCheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SupportedSaslMechanisms.GSS_SPNEGO,
+                authMechGssSpnegoCheckbox.getSelection() );
+            authMechGssSpnegoText.setEnabled( authMechGssSpnegoCheckbox.getSelection() );
+        };
+    };
+    private ModifyListener authMechGssSpnegoTextListener = new ModifyListener()
+    {
+        public void modifyText( ModifyEvent e )
+        {
+            setNtlmMechProviderSupportedAuthenticationMechanism( SupportedSaslMechanisms.GSS_SPNEGO,
+                authMechGssSpnegoText.getText() );
+        }
+    };
+    private SelectionAdapter authMechNtlmCheckboxListener = new SelectionAdapter()
+    {
+        public void widgetSelected( SelectionEvent e )
+        {
+            setEnableSupportedAuthenticationMechanism( SupportedSaslMechanisms.NTLM,
+                authMechNtlmCheckbox.getSelection() );
+            authMechNtlmText.setEnabled( authMechNtlmCheckbox.getSelection() );
+        };
+    };
+    private ModifyListener authMechNtlmTextListener = new ModifyListener()
+    {
+        public void modifyText( ModifyEvent e )
+        {
+            setNtlmMechProviderSupportedAuthenticationMechanism( SupportedSaslMechanisms.NTLM,
+                authMechNtlmText.getText() );
+        }
+    };
 
 
     /**
@@ -303,40 +371,46 @@ public class LdapLdapsServersPage extend
         section.setText( "Supported Authentication Mechanisms" );
         section.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
         Composite composite = toolkit.createComposite( section );
+        composite.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false ) );
         toolkit.paintBordersFor( composite );
-        GridLayout glayout = new GridLayout( 3, false );
-        composite.setLayout( glayout );
+        composite.setLayout( new GridLayout( 4, true ) );
         section.setClient( composite );
 
+        // Simple
         authMechSimpleCheckbox = toolkit.createButton( composite, "Simple", SWT.CHECK );
+        authMechSimpleCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+
+        // GSSAPI
+        authMechGssapiCheckbox = toolkit.createButton( composite, "GSSAPI", SWT.CHECK );
+        authMechGssapiCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+
+        // CRAM-MD5
         authMechCramMd5Checkbox = toolkit.createButton( composite, "CRAM-MD5", SWT.CHECK );
+        authMechCramMd5Checkbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+
+        // DIGEST-MD5
         authMechDigestMd5Checkbox = toolkit.createButton( composite, "DIGEST-MD5", SWT.CHECK );
-        authMechGssapiCheckbox = toolkit.createButton( composite, "GSSAPI", SWT.CHECK );
+        authMechDigestMd5Checkbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+
+        // NTLM
         authMechNtlmCheckbox = toolkit.createButton( composite, "NTLM", SWT.CHECK );
-        authMechGssSpnegoCheckbox = toolkit.createButton( composite, "GSS-SPNEGO", SWT.CHECK );
+        authMechNtlmCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+        Composite authMechNtlmComposite = toolkit.createComposite( composite );
+        authMechNtlmComposite.setLayout( new GridLayout( 2, false ) );
+        toolkit.createLabel( authMechNtlmComposite, "Provider:" );
+        authMechNtlmText = toolkit.createText( authMechNtlmComposite, "" );
+        authMechNtlmText.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+        authMechNtlmComposite.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, false, false, 3, 1 ) );
 
-        // Supported Authentication Mechanisms Table
-        //        Table supportedMechanismsTable = toolkit.createTable( composite, SWT.CHECK );
-        //        GridData gd = new GridData( SWT.FILL, SWT.NONE, true, false, 1, 3 );
-        //        gd.heightHint = 110;
-        //        supportedMechanismsTable.setLayoutData( gd );
-        //        supportedMechanismsTableViewer = new CheckboxTableViewer( supportedMechanismsTable );
-        //        supportedMechanismsTableViewer.setContentProvider( new ArrayContentProvider() );
-        //        supportedMechanismsTableViewer.setInput( new String[]
-        //            { "Simple", "CRAM-MD5", "DIGEST-MD5", "GSSAPI", "NTLM", "GSS_SPNEGO" } );
-        //
-        //        // Edit Button
-        //        editSupportedMechanismButton = toolkit.createButton( composite, "Edit", SWT.PUSH );
-        //        editSupportedMechanismButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
-        //        editSupportedMechanismButton.setEnabled( false );
-        //
-        //        // Select All Button
-        //        selectAllSupportedMechanismsButton = toolkit.createButton( composite, "Select All", SWT.PUSH );
-        //        selectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
-        //
-        //        // Deselect All Button
-        //        deselectAllSupportedMechanismsButton = toolkit.createButton( composite, "Deselect All", SWT.PUSH );
-        //        deselectAllSupportedMechanismsButton.setLayoutData( new GridData( SWT.FILL, SWT.BEGINNING, false, false ) );
+        // GSS-SPENEGO
+        authMechGssSpnegoCheckbox = toolkit.createButton( composite, "GSS-SPNEGO", SWT.CHECK );
+        authMechGssSpnegoCheckbox.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+        Composite authMechGssSpnegoComposite = toolkit.createComposite( composite );
+        authMechGssSpnegoComposite.setLayout( new GridLayout( 2, false ) );
+        toolkit.createLabel( authMechGssSpnegoComposite, "Provider:" );
+        authMechGssSpnegoText = toolkit.createText( authMechGssSpnegoComposite, "" );
+        authMechGssSpnegoText.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false ) );
+        authMechGssSpnegoComposite.setLayoutData( new GridData( SWT.FILL, SWT.CENTER, true, false, 3, 1 ) );
     }
 
 
@@ -413,21 +487,29 @@ public class LdapLdapsServersPage extend
 
         // Auth Mechanisms Simple Checkbox
         addDirtyListener( authMechSimpleCheckbox );
+        addSelectionListener( authMechSimpleCheckbox, authMechSimpleCheckboxListener );
+
+        // Auth Mechanisms GSSAPI Checkbox
+        addDirtyListener( authMechGssapiCheckbox );
+        addSelectionListener( authMechGssapiCheckbox, authMechGssapiCheckboxListener );
 
         // Auth Mechanisms CRAM-MD5 Checkbox
         addDirtyListener( authMechCramMd5Checkbox );
+        addSelectionListener( authMechCramMd5Checkbox, authMechCramMd5CheckboxListener );
 
         // Auth Mechanisms DIGEST-MD5 Checkbox
         addDirtyListener( authMechDigestMd5Checkbox );
-
-        // Auth Mechanisms GSSAPI Checkbox
-        addDirtyListener( authMechGssapiCheckbox );
+        addSelectionListener( authMechDigestMd5Checkbox, authMechDigestMd5CheckboxListener );
 
         // Auth Mechanisms NTLM Checkbox
         addDirtyListener( authMechNtlmCheckbox );
+        addSelectionListener( authMechNtlmCheckbox, authMechNtlmCheckboxListener );
+        addModifyListener( authMechNtlmText, authMechNtlmTextListener );
 
         // Auth Mechanisms GSS SPENEGO Checkbox
         addDirtyListener( authMechGssSpnegoCheckbox );
+        addSelectionListener( authMechGssSpnegoCheckbox, authMechGssSpnegoCheckboxListener );
+        addModifyListener( authMechGssSpnegoText, authMechGssSpnegoTextListener );
 
         // SASL Host Text
         addDirtyListener( saslHostText );
@@ -472,21 +554,29 @@ public class LdapLdapsServersPage extend
 
         // Auth Mechanisms Simple Checkbox
         removeDirtyListener( authMechSimpleCheckbox );
+        removeSelectionListener( authMechSimpleCheckbox, authMechSimpleCheckboxListener );
 
         // Auth Mechanisms CRAM-MD5 Checkbox
         removeDirtyListener( authMechCramMd5Checkbox );
+        removeSelectionListener( authMechCramMd5Checkbox, authMechCramMd5CheckboxListener );
 
         // Auth Mechanisms DIGEST-MD5 Checkbox
         removeDirtyListener( authMechDigestMd5Checkbox );
+        removeSelectionListener( authMechDigestMd5Checkbox, authMechDigestMd5CheckboxListener );
 
         // Auth Mechanisms GSSAPI Checkbox
         removeDirtyListener( authMechGssapiCheckbox );
+        removeSelectionListener( authMechGssapiCheckbox, authMechGssapiCheckboxListener );
 
         // Auth Mechanisms NTLM Checkbox
         removeDirtyListener( authMechNtlmCheckbox );
+        removeSelectionListener( authMechNtlmCheckbox, authMechNtlmCheckboxListener );
+        removeModifyListener( authMechNtlmText, authMechNtlmTextListener );
 
         // Auth Mechanisms GSS SPENEGO Checkbox
         removeDirtyListener( authMechGssSpnegoCheckbox );
+        removeSelectionListener( authMechGssSpnegoCheckbox, authMechGssSpnegoCheckboxListener );
+        removeModifyListener( authMechGssSpnegoText, authMechGssSpnegoTextListener );
 
         // SASL Host Text
         removeDirtyListener( saslHostText );
@@ -509,24 +599,118 @@ public class LdapLdapsServersPage extend
     {
         removeListeners();
 
+        // LDAP Server
         TransportBean ldapServerTransportBean = getLdapServerTransportBean();
         setSelection( enableLdapCheckbox, ldapServerTransportBean.isEnabled() );
         setText( ldapPortText, ldapServerTransportBean.getSystemPort() + "" );
 
+        // LDAPS Server
         TransportBean ldapsServerTransportBean = getLdapsServerTransportBean();
         setSelection( enableLdapsCheckbox, ldapsServerTransportBean.isEnabled() );
         setText( ldapsPortText, ldapsServerTransportBean.getSystemPort() + "" );
 
+        // SASL Properties
         LdapServerBean ldapServerBean = getLdapServerBean();
         setText( saslHostText, ldapServerBean.getLdapServerSaslHost() );
         setText( saslPrincipalText, ldapServerBean.getLdapServerSaslPrincipal() );
         setText( saslSearchBaseDnText, ldapServerBean.getSearchBaseDn().toString() );
 
+        // Supported Auth Mechanisms
+        List<SaslMechHandlerBean> saslMechHandlers = ldapServerBean.getSaslMechHandlers();
+        uncheckAllSupportedAuthenticationMechanisms();
+        for ( SaslMechHandlerBean saslMechHandler : saslMechHandlers )
+        {
+            if ( SASL_MECHANISMS_SIMPLE.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechSimpleCheckbox.setSelection( saslMechHandler.isEnabled() );
+            }
+            else if ( SupportedSaslMechanisms.GSSAPI.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechGssapiCheckbox.setSelection( saslMechHandler.isEnabled() );
+            }
+            if ( SupportedSaslMechanisms.CRAM_MD5.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechCramMd5Checkbox.setSelection( saslMechHandler.isEnabled() );
+            }
+            else if ( SupportedSaslMechanisms.DIGEST_MD5.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechDigestMd5Checkbox.setSelection( saslMechHandler.isEnabled() );
+            }
+            else if ( SupportedSaslMechanisms.GSS_SPNEGO.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechGssSpnegoCheckbox.setSelection( saslMechHandler.isEnabled() );
+                authMechGssSpnegoText.setEnabled( saslMechHandler.isEnabled() );
+                authMechGssSpnegoText.setText( saslMechHandler.getNtlmMechProvider() );
+            }
+            else if ( SupportedSaslMechanisms.NTLM.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                authMechNtlmCheckbox.setSelection( saslMechHandler.isEnabled() );
+                authMechNtlmText.setEnabled( saslMechHandler.isEnabled() );
+                authMechNtlmText.setText( saslMechHandler.getNtlmMechProvider() );
+            }
+        }
+
         addListeners();
     }
 
 
     /**
+     * Unchecks all supported authentication mechanisns checkboxes.
+     */
+    private void uncheckAllSupportedAuthenticationMechanisms()
+    {
+        authMechSimpleCheckbox.setSelection( false );
+        authMechCramMd5Checkbox.setSelection( false );
+        authMechDigestMd5Checkbox.setSelection( false );
+        authMechGssapiCheckbox.setSelection( false );
+        authMechNtlmCheckbox.setSelection( false );
+        authMechNtlmText.setEnabled( false );
+        authMechGssSpnegoCheckbox.setSelection( false );
+        authMechGssSpnegoText.setEnabled( false );
+    }
+
+
+    /**
+     * Sets the enabled flag for the given support authentication mechanism.
+     *
+     * @param mechanismName the mechanism name
+     * @param enabled the enabled flag
+     */
+    private void setEnableSupportedAuthenticationMechanism( String mechanismName, boolean enabled )
+    {
+        List<SaslMechHandlerBean> saslMechHandlers = getLdapServerBean().getSaslMechHandlers();
+        for ( SaslMechHandlerBean saslMechHandler : saslMechHandlers )
+        {
+            if ( mechanismName.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                saslMechHandler.setEnabled( enabled );
+                return;
+            }
+        }
+    }
+
+
+    /**
+     * Sets the NTLM mechanism provider for the given support authentication mechanism.
+     *
+     * @param mechanismName the mechanism name
+     * @param ntlmMechProvider the NTLM mechanism provider
+     */
+    private void setNtlmMechProviderSupportedAuthenticationMechanism( String mechanismName, String ntlmMechProvider )
+    {
+        List<SaslMechHandlerBean> saslMechHandlers = getLdapServerBean().getSaslMechHandlers();
+        for ( SaslMechHandlerBean saslMechHandler : saslMechHandlers )
+        {
+            if ( mechanismName.equalsIgnoreCase( saslMechHandler.getSaslMechName() ) )
+            {
+                saslMechHandler.setNtlmMechProvider( ntlmMechProvider );
+                return;
+            }
+        }
+    }
+
+
+    /**
      * Gets the LDAP Server bean.
      *
      * @return