public void mergeParametersToLdapURL( ConnectionParameter parameter, LdapUrl ldapUrl )
{
switch ( parameter.getAuthMethod() )
{
case SASL_CRAM_MD5:
ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_CRAM_MD5 ) );
break;
case SASL_DIGEST_MD5:
ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_DIGEST_MD5 ) );
break;
case SASL_GSSAPI:
ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_GSSAPI ) );
break;
case SIMPLE:
if ( StringUtils.isEmpty( parameter.getBindPrincipal() ) )
{
// default if bind user is present
ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_SIMPLE ) );
}
break;
case NONE:
if ( StringUtils.isNotEmpty( parameter.getBindPrincipal() ) )
{
// default if bind user is absent
ldapUrl.getExtensions().add( new Extension( false, X_AUTH_METHOD, X_AUTH_METHOD_ANONYMOUS ) );
}
break;
}
if ( StringUtils.isNotEmpty( parameter.getBindPrincipal() ) )
{
ldapUrl.getExtensions().add( new Extension( false, X_BIND_USER, parameter.getBindPrincipal() ) );
}
if ( StringUtils.isNotEmpty( parameter.getBindPassword() ) )
{
ldapUrl.getExtensions().add( new Extension( false, X_BIND_PASSWORD, parameter.getBindPassword() ) );
}
switch ( parameter.getAuthMethod() )
{
case SASL_CRAM_MD5:
case SASL_DIGEST_MD5:
case SASL_GSSAPI:
if ( StringUtils.isNotEmpty( parameter.getSaslRealm() ) )
{
ldapUrl.getExtensions().add( new Extension( false, X_SASL_REALM, parameter.getSaslRealm() ) );
}
switch ( parameter.getSaslQop() )
{
case AUTH:
// default
break;
case AUTH_INT:
ldapUrl.getExtensions().add( new Extension( false, X_SASL_QOP, X_SASL_QOP_AUTH_INT ) );
break;
case AUTH_CONF:
ldapUrl.getExtensions().add( new Extension( false, X_SASL_QOP, X_SASL_QOP_AUTH_INT_PRIV ) );
break;
}
switch ( parameter.getSaslSecurityStrength() )
{
case HIGH:
// default
break;
case MEDIUM:
ldapUrl.getExtensions().add(
new Extension( false, X_SASL_SEC_STRENGTH, X_SASL_SEC_STRENGTH_MEDIUM ) );
break;
case LOW:
ldapUrl.getExtensions().add(
new Extension( false, X_SASL_SEC_STRENGTH, X_SASL_SEC_STRENGTH_LOW ) );
break;
}
if ( !parameter.isSaslMutualAuthentication() )
{
ldapUrl.getExtensions().add( new Extension( false, X_SASL_NO_MUTUAL_AUTH, null ) );
}
}
switch ( parameter.getAuthMethod() )
{
case SASL_GSSAPI:
switch ( parameter.getKrb5CredentialConfiguration() )
{
case USE_NATIVE:
// default
break;
case OBTAIN_TGT:
ldapUrl.getExtensions().add(
new Extension( false, X_KRB5_CREDENTIALS_CONF, X_KRB5_CREDENTIALS_CONF_OBTAIN_TGT ) );
break;
}
switch ( parameter.getKrb5Configuration() )
{
case DEFAULT:
// default
break;
case FILE:
ldapUrl.getExtensions().add( new Extension( false, X_KRB5_CONFIG, X_KRB5_CONFIG_FILE ) );
ldapUrl.getExtensions().add(
new Extension( false, X_KRB5_CONFIG_FILE_FILE, parameter.getKrb5ConfigurationFile() ) );
break;
case MANUAL:
ldapUrl.getExtensions().add( new Extension( false, X_KRB5_CONFIG, X_KRB5_CONFIG_MANUAL ) );
ldapUrl.getExtensions().add(
new Extension( false, X_KRB5_CONFIG_MANUAL_REALM, parameter.getKrb5Realm() ) );
ldapUrl.getExtensions().add(
new Extension( false, X_KRB5_CONFIG_MANUAL_KDC_HOST, parameter.getKrb5KdcHost() ) );
ldapUrl.getExtensions().add(
new Extension( false, X_KRB5_CONFIG_MANUAL_KDC_PORT, "" + parameter.getKrb5KdcPort() ) ); //$NON-NLS-1$
break;
}
}
}