This is an automated email from the ASF dual-hosted git repository.

smolnar pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 563d508  AMBARI-25043. Sensitive Ambari configuration values are 
encrypted in Ambari Server DB (#2742)
563d508 is described below

commit 563d508f6eedf730e9d15183afb50790c4ffb52f
Author: Sandor Molnar <[email protected]>
AuthorDate: Sat Dec 22 08:47:15 2018 +0100

    AMBARI-25043. Sensitive Ambari configuration values are encrypted in Ambari 
Server DB (#2742)
---
 .../configuration/AmbariServerConfiguration.java   | 56 +++++++++++++
 .../AmbariServerConfigurationKey.java              |  8 ++
 .../AmbariServerConfigurationProvider.java         | 10 ++-
 .../ambari/server/controller/ControllerModule.java |  4 +
 .../internal/AmbariServerConfigurationHandler.java | 95 +++-------------------
 .../AmbariServerLDAPConfigurationHandler.java      | 17 ++--
 .../AmbariServerSSOConfigurationHandler.java       |  5 +-
 ...erverStackAdvisorAwareConfigurationHandler.java |  5 +-
 .../ldap/domain/AmbariLdapConfiguration.java       | 21 ++---
 .../ads/DefaultLdapAttributeDetectionService.java  |  5 +-
 .../jwt/JwtAuthenticationProperties.java           | 69 ++++++----------
 .../tproxy/AmbariTProxyConfiguration.java          | 35 ++------
 .../AmbariServerConfigurationEncryptor.java        | 78 ++++++++++++++++++
 .../server/security/encryption/Encryptor.java      |  5 +-
 .../security/encryption/PropertiesEncryptor.java   | 10 +--
 .../src/main/python/ambari_server/setupSecurity.py | 31 -------
 .../ambari/server/agent/AgentResourceTest.java     |  2 +
 .../alerts/AgentHeartbeatAlertRunnableTest.java    |  3 -
 .../AmbariServerConfigurationKeyTest.java          | 10 +++
 .../AmbariServerConfigurationProviderTest.java     |  4 +
 .../AmbariServerConfigurationTest.java             | 12 ++-
 .../AmbariServerConfigurationHandlerTest.java      | 18 ++--
 .../AmbariServerSSOConfigurationHandlerTest.java   | 10 +--
 .../GroupPrivilegeResourceProviderTest.java        |  5 ++
 .../PreUpgradeCheckResourceProviderTest.java       |  2 +
 ...ComponentConfigurationResourceProviderTest.java | 95 ++--------------------
 .../StackUpgradeConfigurationMergeTest.java        |  2 +-
 .../UserAuthorizationResourceProviderTest.java     |  2 +
 .../UserPrivilegeResourceProviderTest.java         |  5 ++
 .../internal/UserResourceProviderTest.java         |  2 +
 .../server/ldap/AmbariLdapConfigurationTest.java   | 21 +----
 .../AbstractAuthenticationProviderTest.java        |  5 ++
 .../jwt/AmbariJwtAuthenticationFilterTest.java     | 13 ++-
 .../jwt/JwtAuthenticationPropertiesTest.java       | 20 +++--
 .../pam/AmbariPamAuthenticationProviderTest.java   |  5 ++
 .../AmbariAuthorizationFilterTest.java             |  5 ++
 .../server/security/authorization/UsersTest.java   |  5 ++
 .../AbstractPrepareKerberosServerActionTest.java   |  2 +
 .../upgrades/PreconfigureKerberosActionTest.java   |  6 +-
 .../server/testutils/PartialNiceMockBinder.java    |  2 +
 ambari-server/src/test/python/TestAmbariServer.py  | 25 ++----
 41 files changed, 345 insertions(+), 390 deletions(-)

diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfiguration.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfiguration.java
index fdffae7..24ba04a 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfiguration.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfiguration.java
@@ -17,6 +17,7 @@
  */
 package org.apache.ambari.server.configuration;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.slf4j.Logger;
@@ -32,6 +33,14 @@ import org.slf4j.LoggerFactory;
 public abstract class AmbariServerConfiguration {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(AmbariServerConfiguration.class);
+  
+  protected final Map<String, String> configurationMap = new HashMap<>();
+
+  protected AmbariServerConfiguration(Map<String, String> configurationMap) {
+    if (configurationMap != null) {
+      this.configurationMap.putAll(configurationMap);
+    }
+  }
 
   /**
    * Gets the configuration value for given {@link 
AmbariServerConfigurationKey}.
@@ -64,5 +73,52 @@ public abstract class AmbariServerConfiguration {
       return defaultValue;
     }
   }
+  
+  /**
+   * @return this configuration represented as a map
+   */
+  public Map<String, String> toMap() {
+    return new HashMap<>(configurationMap);
+  }
+
+  /**
+   * Sets the given value for the given configuration
+   * 
+   * @param configName
+   *          the name of the configuration to set the value for
+   * @param value
+   *          the new value
+   *
+   * @throws IllegalArgumentException
+   *           in case the supplied configuration does not belong to the
+   *           configuration category of this instance
+   */
+  public void setValueFor(String configName, String value) {
+    AmbariServerConfigurationKey ambariServerConfigurationKey = 
AmbariServerConfigurationKey.translate(getCategory(), configName);
+    if (ambariServerConfigurationKey != null) {
+      setValueFor(ambariServerConfigurationKey, value);
+    }
+  }
+
+  /**
+   * Sets the given value for the given configuration
+   * 
+   * @param ambariServerConfigurationKey
+   *          the configuration key to set the value for
+   * @param value
+   *          the new value
+   *
+   * @throws IllegalArgumentException
+   *           in case the supplied configuration does not belong to the
+   *           configuration category of this instance
+   */
+  public void setValueFor(AmbariServerConfigurationKey 
ambariServerConfigurationKey, String value) {
+    if (ambariServerConfigurationKey.getConfigurationCategory() != 
getCategory()) {
+      throw new IllegalArgumentException(ambariServerConfigurationKey.key() + 
" is not a valid " + getCategory().getCategoryName());
+    }
+    configurationMap.put(ambariServerConfigurationKey.key(), value);
+  }
+  
+  protected abstract AmbariServerConfigurationCategory getCategory();
 
 }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
index 7c9d874..9d14e8f 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKey.java
@@ -17,6 +17,10 @@ package org.apache.ambari.server.configuration;
 import static 
org.apache.ambari.server.configuration.ConfigurationPropertyType.PASSWORD;
 import static 
org.apache.ambari.server.configuration.ConfigurationPropertyType.PLAINTEXT;
 
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -162,4 +166,8 @@ public enum AmbariServerConfigurationKey {
     LOG.warn("Invalid Ambari server configuration key: {}:{}", categoryName, 
keyName);
     return null;
   }
+  
+  public static Set<String> findPasswordConfigurations() {
+      return Stream.of(AmbariServerConfigurationKey.values()).filter(k -> 
PASSWORD == k.getConfigurationPropertyType()).map(f -> 
f.propertyName).collect(Collectors.toSet());
+  }
 }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProvider.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProvider.java
index c970bb6..4938ae9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProvider.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProvider.java
@@ -28,12 +28,14 @@ import org.apache.ambari.server.events.JpaInitializedEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
 import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
+import com.google.inject.name.Named;
 import com.google.inject.persist.jpa.AmbariJpaPersistService;
 
 /**
@@ -54,6 +56,9 @@ public abstract class AmbariServerConfigurationProvider<T 
extends AmbariServerCo
   @Inject
   private Provider<AmbariConfigurationDAO> ambariConfigurationDAOProvider;
 
+  @Inject @Named("AmbariServerConfigurationEncryptor")
+  private Encryptor<AmbariServerConfiguration> encryptor;
+
   private final AtomicBoolean jpaStarted = new AtomicBoolean(false);
 
   private final AmbariServerConfigurationCategory configurationCategory;
@@ -84,6 +89,7 @@ public abstract class AmbariServerConfigurationProvider<T 
extends AmbariServerCo
     if 
(configurationCategory.getCategoryName().equalsIgnoreCase(event.getCategoryName()))
 {
       LOGGER.info("Ambari configuration changed event received: {}", event);
       instance = loadInstance();
+      
     }
   }
 
@@ -120,7 +126,9 @@ public abstract class AmbariServerConfigurationProvider<T 
extends AmbariServerCo
   private T loadInstance() {
     if (jpaStarted.get()) {
       LOGGER.info("Loading {} configuration data", 
configurationCategory.getCategoryName());
-      return 
loadInstance(ambariConfigurationDAOProvider.get().findByCategory(configurationCategory.getCategoryName()));
+      T instance = 
loadInstance(ambariConfigurationDAOProvider.get().findByCategory(configurationCategory.getCategoryName()));
+      encryptor.decryptSensitiveData(instance);
+      return instance;
     } else {
       LOGGER.info("Cannot load {} configuration data since JPA is not 
initialized", configurationCategory.getCategoryName());
       if (instance == null) {
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
index 0f530cb..114d671 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/ControllerModule.java
@@ -59,6 +59,7 @@ import 
org.apache.ambari.server.checks.DatabaseConsistencyCheckHelper;
 import org.apache.ambari.server.checks.UpgradeCheckRegistry;
 import org.apache.ambari.server.checks.UpgradeCheckRegistryProvider;
 import org.apache.ambari.server.cleanup.ClasspathScannerUtils;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.configuration.Configuration.ConnectionPoolType;
 import org.apache.ambari.server.configuration.Configuration.DatabaseType;
@@ -117,6 +118,7 @@ import 
org.apache.ambari.server.security.authorization.internal.InternalAuthenti
 import 
org.apache.ambari.server.security.authorization.internal.RunWithInternalSecurityContext;
 import org.apache.ambari.server.security.encryption.AESEncryptionService;
 import org.apache.ambari.server.security.encryption.AgentConfigUpdateEncryptor;
+import 
org.apache.ambari.server.security.encryption.AmbariServerConfigurationEncryptor;
 import org.apache.ambari.server.security.encryption.ConfigPropertiesEncryptor;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
 import org.apache.ambari.server.security.encryption.CredentialStoreServiceImpl;
@@ -341,9 +343,11 @@ public class ControllerModule extends AbstractModule {
     if (configuration.shouldEncryptSensitiveData()) {
       bind(new TypeLiteral<Encryptor<Config>>() 
{}).annotatedWith(Names.named("ConfigPropertiesEncryptor")).to(ConfigPropertiesEncryptor.class);
       bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).to(AgentConfigUpdateEncryptor.class);
+      bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).to(AmbariServerConfigurationEncryptor.class);
     } else {
       bind(new TypeLiteral<Encryptor<Config>>() 
{}).annotatedWith(Names.named("ConfigPropertiesEncryptor")).toInstance(Encryptor.NONE);
       bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+      bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
     }
 
     bind(Configuration.class).toInstance(configuration);
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandler.java
index 6d331ab..4fbc9d0 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandler.java
@@ -18,13 +18,9 @@
 
 package org.apache.ambari.server.controller.internal;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -32,15 +28,11 @@ import java.util.stream.Collectors;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.RootServiceComponentConfiguration;
-import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.events.AmbariConfigurationChangedEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
 import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
-import org.apache.ambari.server.security.encryption.CredentialProvider;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,15 +50,11 @@ public class AmbariServerConfigurationHandler extends 
RootServiceComponentConfig
 
   private final AmbariConfigurationDAO ambariConfigurationDAO;
   private final AmbariEventPublisher publisher;
-  private final Configuration ambariConfiguration;
-
-  private CredentialProvider credentialProvider;
 
   @Inject
-  AmbariServerConfigurationHandler(AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher, Configuration 
ambariConfiguration) {
+  AmbariServerConfigurationHandler(AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher) {
     this.ambariConfigurationDAO = ambariConfigurationDAO;
     this.publisher = publisher;
-    this.ambariConfiguration = ambariConfiguration;
   }
 
   @Override
@@ -111,31 +99,8 @@ public class AmbariServerConfigurationHandler extends 
RootServiceComponentConfig
 
   @Override
   public void updateComponentCategory(String categoryName, Map<String, String> 
properties, boolean removePropertiesIfNotSpecified) throws AmbariException {
-    boolean toBePublished = false;
-    final Iterator<Map.Entry<String, String>> propertiesIterator = 
properties.entrySet().iterator();
-    while (propertiesIterator.hasNext()) {
-      Map.Entry<String, String> property = propertiesIterator.next();
-
-      // Ensure the incoming property is valid
-      AmbariServerConfigurationKey key = 
AmbariServerConfigurationUtils.getConfigurationKey(categoryName, 
property.getKey());
-      if(key == null) {
-        throw new IllegalArgumentException(String.format("Invalid Ambari 
server configuration key: %s:%s", categoryName, property.getKey()));
-      }
-
-      if (AmbariServerConfigurationUtils.isPassword(key)) {
-        final String passwordFileOrCredentialStoreAlias = 
fetchPasswordFileNameOrCredentialStoreAlias(categoryName, property.getKey());
-        if (StringUtils.isNotBlank(passwordFileOrCredentialStoreAlias)) { //if 
blank -> this is the first time setup; we simply need to store the alias/file 
name
-          if (updatePasswordIfNeeded(categoryName, property.getKey(), 
property.getValue())) {
-            toBePublished = true;
-          }
-          propertiesIterator.remove(); //we do not need to change the any 
PASSWORD type configuration going forward
-        }
-      }
-    }
-
-    if (!properties.isEmpty()) {
-      toBePublished = ambariConfigurationDAO.reconcileCategory(categoryName, 
properties, removePropertiesIfNotSpecified) || toBePublished;
-    }
+    validateProperties(categoryName, properties);
+    final boolean toBePublished = properties.isEmpty() ? false : 
ambariConfigurationDAO.reconcileCategory(categoryName, properties, 
removePropertiesIfNotSpecified);
 
     if (toBePublished) {
       // notify subscribers about the configuration changes
@@ -143,6 +108,14 @@ public class AmbariServerConfigurationHandler extends 
RootServiceComponentConfig
     }
   }
 
+  private void validateProperties(String categoryName, Map<String, String> 
properties) {
+    for (String key : properties.keySet()) {
+      if (AmbariServerConfigurationUtils.getConfigurationKey(categoryName, 
key) == null) {
+        throw new IllegalArgumentException(String.format("Invalid Ambari 
server configuration key: %s:%s", categoryName, key));
+      }
+    }
+  }
+
   @Override
   public OperationResult performOperation(String categoryName, Map<String, 
String> properties,
                                           boolean mergeExistingProperties, 
String operation,
@@ -197,50 +170,4 @@ public class AmbariServerConfigurationHandler extends 
RootServiceComponentConfig
       return 
Arrays.stream(enabledServices.split(",")).map(String::trim).map(String::toUpperCase).collect(Collectors.toSet());
     }
   }
-
-  private boolean updatePasswordIfNeeded(String categoryName, String 
propertyName, String newPassword) throws AmbariException {
-    if (newPassword != null) {
-      final String passwordFileOrCredentailStoreAlias = 
fetchPasswordFileNameOrCredentialStoreAlias(categoryName, propertyName);
-      if (!newPassword.equals(passwordFileOrCredentailStoreAlias)) { //we only 
need to do anything if the user-supplied password is a 'real' password
-        if (ambariConfiguration.isSecurityPasswordEncryptionEnabled()) {
-          
getCredentialProvider().addAliasToCredentialStore(passwordFileOrCredentailStoreAlias,
 newPassword);
-        } else {
-          savePasswordInFile(passwordFileOrCredentailStoreAlias, newPassword);
-        }
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /*
-   * If the configuration element is actually a PASSWORD type element then we 
either have a password file name stored in the DB
-   * or - in case security password encryption is enabled - a Credential Store 
alias.
-   */
-  private String fetchPasswordFileNameOrCredentialStoreAlias(String 
categoryName, String propertyName) {
-    for (AmbariConfigurationEntity entity : 
ambariConfigurationDAO.findByCategory(categoryName)) {
-      if (entity.getPropertyName().equals(propertyName)) {
-        return entity.getPropertyValue();
-      }
-    }
-
-    return null;
-  }
-
-  private CredentialProvider getCredentialProvider() throws AmbariException {
-    if (credentialProvider == null) {
-      credentialProvider = new CredentialProvider(null, ambariConfiguration);
-    }
-    return credentialProvider;
-  }
-
-  private void savePasswordInFile(String passwordFileName, String newPassword) 
throws AmbariException {
-    try {
-      if (StringUtils.isNotBlank(passwordFileName)) {
-        FileUtils.writeStringToFile(new File(passwordFileName), newPassword, 
Charset.defaultCharset());
-      }
-    } catch (IOException e) {
-      throw new AmbariException("Error while updating password file [" + 
passwordFileName + "]", e);
-    }
-  }
 }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
index fbea31f..7f1a49f 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerLDAPConfigurationHandler.java
@@ -30,8 +30,8 @@ import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.spi.SystemException;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
@@ -39,6 +39,7 @@ import 
org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.ldap.service.AmbariLdapException;
 import org.apache.ambari.server.ldap.service.LdapFacade;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.commons.lang.StringUtils;
@@ -47,6 +48,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import com.google.inject.name.Named;
 
 /**
  * AmbariServerLDAPConfigurationHandler handles Ambari server LDAP-specific 
configuration properties.
@@ -56,19 +58,22 @@ public class AmbariServerLDAPConfigurationHandler extends 
AmbariServerStackAdvis
   private static final Logger LOGGER = 
LoggerFactory.getLogger(AmbariServerLDAPConfigurationHandler.class);
 
   private final LdapFacade ldapFacade;
+  private final Encryptor<AmbariServerConfiguration> encryptor;
 
   @Inject
   AmbariServerLDAPConfigurationHandler(Clusters clusters, ConfigHelper 
configHelper, AmbariManagementController managementController,
-      StackAdvisorHelper stackAdvisorHelper, AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher, Configuration 
ambariConfiguration,
-      LdapFacade ldapFacade) {
-    super(ambariConfigurationDAO, publisher, ambariConfiguration, clusters, 
configHelper, managementController, stackAdvisorHelper);
+      StackAdvisorHelper stackAdvisorHelper, AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher,
+      LdapFacade ldapFacade, @Named("AmbariServerConfigurationEncryptor") 
Encryptor<AmbariServerConfiguration> encryptor) {
+    super(ambariConfigurationDAO, publisher, clusters, configHelper, 
managementController, stackAdvisorHelper);
     this.ldapFacade = ldapFacade;
+    this.encryptor = encryptor;
   }
   
   @Override
   public void updateComponentCategory(String categoryName, Map<String, String> 
properties, boolean removePropertiesIfNotSpecified) throws AmbariException {
-    super.updateComponentCategory(categoryName, properties, 
removePropertiesIfNotSpecified);
-    final AmbariLdapConfiguration ldapConfiguration = new 
AmbariLdapConfiguration(getConfigurationProperties(AmbariServerConfigurationCategory.LDAP_CONFIGURATION.getCategoryName()));
+    final AmbariLdapConfiguration ldapConfiguration = new 
AmbariLdapConfiguration(properties);
+    encryptor.encryptSensitiveData(ldapConfiguration);
+    super.updateComponentCategory(categoryName, ldapConfiguration.toMap(), 
removePropertiesIfNotSpecified);
     if (ldapConfiguration.isAmbariManagesLdapConfiguration()) {
       processClusters(LDAP_CONFIGURATIONS);
     }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandler.java
index d6c985f..5f5ec55 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandler.java
@@ -24,7 +24,6 @@ import java.util.Set;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
@@ -43,8 +42,8 @@ public class AmbariServerSSOConfigurationHandler extends 
AmbariServerStackAdviso
 
   @Inject
   public AmbariServerSSOConfigurationHandler(Clusters clusters, ConfigHelper 
configHelper, AmbariManagementController managementController,
-      StackAdvisorHelper stackAdvisorHelper, AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher, Configuration 
ambariConfiguration) {
-    super(ambariConfigurationDAO, publisher, ambariConfiguration, clusters, 
configHelper, managementController, stackAdvisorHelper);
+      StackAdvisorHelper stackAdvisorHelper, AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher) {
+    super(ambariConfigurationDAO, publisher, clusters, configHelper, 
managementController, stackAdvisorHelper);
   }
 
   @Override
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
index c910e54..49d5ec9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/AmbariServerStackAdvisorAwareConfigurationHandler.java
@@ -32,7 +32,6 @@ import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
 import 
org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
@@ -58,9 +57,9 @@ class AmbariServerStackAdvisorAwareConfigurationHandler 
extends AmbariServerConf
   private final AmbariManagementController managementController;
   private final StackAdvisorHelper stackAdvisorHelper;
 
-  AmbariServerStackAdvisorAwareConfigurationHandler(AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher, Configuration 
ambariConfiguration,
+  AmbariServerStackAdvisorAwareConfigurationHandler(AmbariConfigurationDAO 
ambariConfigurationDAO, AmbariEventPublisher publisher,
       Clusters clusters, ConfigHelper configHelper, AmbariManagementController 
managementController, StackAdvisorHelper stackAdvisorHelper) {
-    super(ambariConfigurationDAO, publisher, ambariConfiguration);
+    super(ambariConfigurationDAO, publisher);
     this.clusters = clusters;
     this.configHelper = configHelper;
     this.managementController = managementController;
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/domain/AmbariLdapConfiguration.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/domain/AmbariLdapConfiguration.java
index 163e7b5..43b11a9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/domain/AmbariLdapConfiguration.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/domain/AmbariLdapConfiguration.java
@@ -24,7 +24,6 @@ import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
 import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import 
org.apache.ambari.server.configuration.LdapUsernameCollisionHandlingBehavior;
 import org.apache.ambari.server.security.authorization.LdapServerProperties;
-import org.apache.ambari.server.utils.PasswordUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -38,23 +37,17 @@ import org.apache.commons.lang.builder.HashCodeBuilder;
  */
 public class AmbariLdapConfiguration extends AmbariServerConfiguration {
 
-  private final Map<String, String> configurationMap = new HashMap<>();
-
-  public void setValueFor(AmbariServerConfigurationKey 
ambariServerConfigurationKey, String value) {
-    if (ambariServerConfigurationKey.getConfigurationCategory() != 
AmbariServerConfigurationCategory.LDAP_CONFIGURATION) {
-      throw new IllegalArgumentException(ambariServerConfigurationKey.name() + 
" is not an LDAP configuration");
-    }
-    configurationMap.put(ambariServerConfigurationKey.key(), value);
-  }
-
   public AmbariLdapConfiguration() {
     this(null);
   }
 
   public AmbariLdapConfiguration(Map<String, String> configurationMap) {
-    if (configurationMap != null) {
-      this.configurationMap.putAll(configurationMap);
-    }
+    super(configurationMap);
+  }
+  
+  @Override
+  protected AmbariServerConfigurationCategory getCategory() {
+    return AmbariServerConfigurationCategory.LDAP_CONFIGURATION;
   }
 
   public boolean isAmbariManagesLdapConfiguration() {
@@ -249,7 +242,7 @@ public class AmbariLdapConfiguration extends 
AmbariServerConfiguration {
     
ldapServerProperties.setUseSsl(parseBoolean(configValue(AmbariServerConfigurationKey.USE_SSL)));
     
ldapServerProperties.setAnonymousBind(parseBoolean(configValue(AmbariServerConfigurationKey.ANONYMOUS_BIND)));
     
ldapServerProperties.setManagerDn(configValue(AmbariServerConfigurationKey.BIND_DN));
-    
ldapServerProperties.setManagerPassword(PasswordUtils.getInstance().readPassword(configValue(AmbariServerConfigurationKey.BIND_PASSWORD),
 AmbariServerConfigurationKey.BIND_PASSWORD.getDefaultValue()));
+    
ldapServerProperties.setManagerPassword(configValue(AmbariServerConfigurationKey.BIND_PASSWORD));
     
ldapServerProperties.setBaseDN(configValue(AmbariServerConfigurationKey.USER_SEARCH_BASE));
     
ldapServerProperties.setUsernameAttribute(configValue(AmbariServerConfigurationKey.USER_NAME_ATTRIBUTE));
     
ldapServerProperties.setForceUsernameToLowercase(parseBoolean(configValue(AmbariServerConfigurationKey.FORCE_LOWERCASE_USERNAMES)));
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionService.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionService.java
index a6050ac..be1d447 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionService.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/ldap/service/ads/DefaultLdapAttributeDetectionService.java
@@ -14,13 +14,14 @@
 
 package org.apache.ambari.server.ldap.service.ads;
 
+import static 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory.LDAP_CONFIGURATION;
+
 import java.util.List;
 import java.util.Map;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
-import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
 import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.ldap.service.AmbariLdapException;
@@ -155,7 +156,7 @@ public class DefaultLdapAttributeDetectionService 
implements LdapAttributeDetect
 
     for (Map.Entry<String, String> detecteMapEntry : 
detectedAttributes.entrySet()) {
       LOG.info("Setting detected configuration value: [{}] - > [{}]", 
detecteMapEntry.getKey(), detecteMapEntry.getValue());
-      AmbariServerConfigurationKey key = 
AmbariServerConfigurationKey.translate(AmbariServerConfigurationCategory.LDAP_CONFIGURATION,
 detecteMapEntry.getKey());
+      AmbariServerConfigurationKey key = 
AmbariServerConfigurationKey.translate(LDAP_CONFIGURATION, 
detecteMapEntry.getKey());
       if(key != null) {
         ambariLdapConfiguration.setValueFor(key, detecteMapEntry.getValue());
       }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationProperties.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationProperties.java
index 4431bfb..887c7a9 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationProperties.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationProperties.java
@@ -33,6 +33,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.ambari.server.configuration.AmbariServerConfiguration;
+import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
 import org.apache.ambari.server.security.encryption.CertificateUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -47,51 +48,40 @@ public class JwtAuthenticationProperties extends 
AmbariServerConfiguration {
   private static final String PEM_CERTIFICATE_HEADER = "-----BEGIN 
CERTIFICATE-----";
   private static final String PEM_CERTIFICATE_FOOTER = "-----END 
CERTIFICATE-----";
 
-  private String authenticationProviderUrl = null;
   private RSAPublicKey publicKey = null;
-  private List<String> audiences = null;
-  private String cookieName = "hadoop-jwt";
-  private String originalUrlQueryParam = null;
-  private boolean enabledForAmbari;
 
   JwtAuthenticationProperties(Map<String, String> configurationMap) {
-    setEnabledForAmbari(Boolean.valueOf(getValue(SSO_AUTHENTICATION_ENABLED, 
configurationMap)));
-    setAudiencesString(getValue(SSO_JWT_AUDIENCES, configurationMap));
-    setAuthenticationProviderUrl(getValue(SSO_PROVIDER_URL, configurationMap));
-    setCookieName(getValue(SSO_JWT_COOKIE_NAME, configurationMap));
-    setOriginalUrlQueryParam(getValue(SSO_PROVIDER_ORIGINAL_URL_PARAM_NAME, 
configurationMap));
-    setPublicKey(getValue(SSO_PROVIDER_CERTIFICATE, configurationMap));
+    super(configurationMap);
+  }
+  
+  @Override
+  protected AmbariServerConfigurationCategory getCategory() {
+    return AmbariServerConfigurationCategory.SSO_CONFIGURATION;
   }
 
   public String getAuthenticationProviderUrl() {
-    return authenticationProviderUrl;
+    return getValue(SSO_PROVIDER_URL, configurationMap);
   }
 
-  public void setAuthenticationProviderUrl(String authenticationProviderUrl) {
-    this.authenticationProviderUrl = authenticationProviderUrl;
+  public String getCertification() {
+    return getValue(SSO_PROVIDER_CERTIFICATE, configurationMap);
   }
 
   public RSAPublicKey getPublicKey() {
+    if (publicKey == null) {
+      publicKey = createPublicKey(getCertification());
+    }
     return publicKey;
   }
 
-  public void setPublicKey(String publicKey) {
-    setPublicKey(createPublicKey(publicKey));
-  }
-
-  public void setPublicKey(RSAPublicKey publicKey) {
+  //used by unit tests only to make JWT related filter test easier to setup
+  void setPublicKey(RSAPublicKey publicKey) {
     this.publicKey = publicKey;
   }
 
   public List<String> getAudiences() {
-    return audiences;
-  }
-
-  public void setAudiences(List<String> audiences) {
-    this.audiences = audiences;
-  }
-
-  public void setAudiencesString(String audiencesString) {
+    final String audiencesString = getValue(SSO_JWT_AUDIENCES, 
configurationMap);
+    final List<String> audiences;
     if (StringUtils.isNotEmpty(audiencesString)) {
       // parse into the list
       String[] audArray = audiencesString.split(",");
@@ -100,30 +90,20 @@ public class JwtAuthenticationProperties extends 
AmbariServerConfiguration {
     } else {
       audiences = null;
     }
+    
+    return audiences;
   }
 
   public String getCookieName() {
-    return cookieName;
-  }
-
-  public void setCookieName(String cookieName) {
-    this.cookieName = cookieName;
+    return getValue(SSO_JWT_COOKIE_NAME, configurationMap);
   }
 
   public String getOriginalUrlQueryParam() {
-    return originalUrlQueryParam;
-  }
-
-  public void setOriginalUrlQueryParam(String originalUrlQueryParam) {
-    this.originalUrlQueryParam = originalUrlQueryParam;
+    return getValue(SSO_PROVIDER_ORIGINAL_URL_PARAM_NAME, configurationMap);
   }
 
   public boolean isEnabledForAmbari() {
-    return enabledForAmbari;
-  }
-
-  public void setEnabledForAmbari(boolean enabledForAmbari) {
-    this.enabledForAmbari = enabledForAmbari;
+    return Boolean.valueOf(getValue(SSO_AUTHENTICATION_ENABLED, 
configurationMap));
   }
 
   /**
@@ -159,4 +139,9 @@ public class JwtAuthenticationProperties extends 
AmbariServerConfiguration {
 
     return publicKey;
   }
+  
+  @Override
+  public Map<String, String> toMap() {
+    return configurationMap;
+  }
 }
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/tproxy/AmbariTProxyConfiguration.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/tproxy/AmbariTProxyConfiguration.java
index 7f7e79f..6b5e18d 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/tproxy/AmbariTProxyConfiguration.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/authentication/tproxy/AmbariTProxyConfiguration.java
@@ -20,6 +20,7 @@ package 
org.apache.ambari.server.security.authentication.tproxy;
 import java.util.Map;
 
 import org.apache.ambari.server.configuration.AmbariServerConfiguration;
+import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
 import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -36,8 +37,6 @@ public class AmbariTProxyConfiguration extends 
AmbariServerConfiguration {
   private static final String TEMPLATE_PROXY_USER_ALLOWED_USERS = 
"ambari.tproxy.proxyuser.%s.users";
   private static final String TEMPLATE_PROXY_USER_ALLOWED_GROUPS = 
"ambari.tproxy.proxyuser.%s.groups";
 
-  private final ImmutableMap<String, String> configurationMap;
-
   /**
    * Constructor
    * <p>
@@ -47,28 +46,18 @@ public class AmbariTProxyConfiguration extends 
AmbariServerConfiguration {
    * @param configurationMap a map of property names to values
    */
   AmbariTProxyConfiguration(Map<String, String> configurationMap) {
-    ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
-
-    if (configurationMap != null) {
-      builder.putAll(configurationMap);
-    }
-
-    this.configurationMap = builder.build();
+    super(configurationMap);
   }
-
-  /**
-   * Returns an immutable map of the contained properties
-   *
-   * @return an immutable map property names to values
-   */
-  public Map<String, String> toMap() {
-    return configurationMap;
+  
+  @Override
+  protected AmbariServerConfigurationCategory getCategory() {
+    return AmbariServerConfigurationCategory.TPROXY_CONFIGURATION;
   }
 
   /**
-   * Determines of tristed proxy support is enabled based on the configuration 
data.
+   * Determines of trusted proxy support is enabled based on the configuration 
data.
    *
-   * @return <code>true</code> if trusted proxy support is enabed; 
<code>false</code> otherwise
+   * @return <code>true</code> if trusted proxy support is enabled; 
<code>false</code> otherwise
    * @see AmbariServerConfigurationKey#TPROXY_AUTHENTICATION_ENABLED
    */
   public boolean isEnabled() {
@@ -95,14 +84,6 @@ public class AmbariTProxyConfiguration extends 
AmbariServerConfiguration {
 
   @Override
   public boolean equals(Object o) {
-    if (this == o) {
-      return true;
-    }
-
-    if (o == null || getClass() != o.getClass()) {
-      return false;
-    }
-
     return new EqualsBuilder()
         .append(configurationMap, ((AmbariTProxyConfiguration) 
o).configurationMap)
         .isEquals();
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/AmbariServerConfigurationEncryptor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/AmbariServerConfigurationEncryptor.java
new file mode 100644
index 0000000..946e1d1
--- /dev/null
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/AmbariServerConfigurationEncryptor.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.security.encryption;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
+import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
+import org.apache.ambari.server.utils.TextEncoding;
+
+import com.google.inject.Inject;
+
+public class AmbariServerConfigurationEncryptor implements 
Encryptor<AmbariServerConfiguration> {
+
+  private final Set<String> passwordConfigurations = 
AmbariServerConfigurationKey.findPasswordConfigurations();
+  private final EncryptionService encryptionService;
+
+  @Inject
+  public AmbariServerConfigurationEncryptor(EncryptionService 
encryptionService) {
+    this.encryptionService = encryptionService;
+  }
+
+  @Override
+  public void encryptSensitiveData(AmbariServerConfiguration encryptible) {
+    encryptible.toMap().entrySet().stream()
+        .filter(f -> shouldEncrypt(f))
+        .forEach(entry -> encryptible.setValueFor(entry.getKey(), 
encryptAndDecorateConfigValue(entry.getValue())));
+  }
+
+  private boolean shouldEncrypt(Map.Entry<String, String> config) {
+    return passwordConfigurations.contains(config.getKey()) && 
!isEncryptedPassword(config.getValue());
+  }
+
+  private String encryptAndDecorateConfigValue(String propertyValue) {
+    final String encrypted = encryptionService.encrypt(propertyValue, 
TextEncoding.BIN_HEX);
+    return String.format(ENCRYPTED_PROPERTY_SCHEME, encrypted);
+  }
+
+  @Override
+  public void decryptSensitiveData(AmbariServerConfiguration decryptible) {
+    decryptible.toMap().entrySet().stream()
+        .filter(f -> passwordConfigurations.contains(f.getKey()))
+        .filter(f -> isEncryptedPassword(f.getValue()))
+        .forEach(entry -> decryptible.setValueFor(entry.getKey(), 
decryptConfig(entry.getValue())));
+  }
+
+  private boolean isEncryptedPassword(String password) {
+    return password != null && 
password.startsWith(Encryptor.ENCRYPTED_PROPERTY_PREFIX); // assuming previous 
encryption by this class
+  }
+
+  private String decryptConfig(String property) {
+    // sample value: ${enc=aes256_hex, value=5248...303d}
+    final String encrypted = 
property.substring(ENCRYPTED_PROPERTY_PREFIX.length(), property.indexOf('}'));
+    return encryptionService.decrypt(encrypted, TextEncoding.BIN_HEX);
+  }
+
+  @Override
+  public String getEncryptionKey() {
+    return encryptionService.getAmbariMasterKey();
+  }
+
+}
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/Encryptor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/Encryptor.java
index 3c9998f..2e00c00 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/Encryptor.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/Encryptor.java
@@ -21,6 +21,9 @@ package org.apache.ambari.server.security.encryption;
  * Defines a generic contract on encrypting/decrypting sensitive data
  */
 public interface Encryptor<T> {
+  
+  static final String ENCRYPTED_PROPERTY_PREFIX = "${enc=aes256_hex, value=";
+  static final String ENCRYPTED_PROPERTY_SCHEME = ENCRYPTED_PROPERTY_PREFIX + 
"%s}";
 
   /**
    * Encrypts the given encryptible object
@@ -43,7 +46,7 @@ public interface Encryptor<T> {
    */
   String getEncryptionKey();
 
-  Encryptor NONE = new Encryptor() {
+  Encryptor NONE = new Encryptor<Object>() {
     @Override
     public void encryptSensitiveData(Object data) { }
     @Override
diff --git 
a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/PropertiesEncryptor.java
 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/PropertiesEncryptor.java
index b0c03c9..655a552 100644
--- 
a/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/PropertiesEncryptor.java
+++ 
b/ambari-server/src/main/java/org/apache/ambari/server/security/encryption/PropertiesEncryptor.java
@@ -36,8 +36,6 @@ import org.apache.commons.collections.CollectionUtils;
  * A common base class for various encryptor implementations
  */
 public class PropertiesEncryptor {
-  private static final String ENCRYPTED_PROPERTY_PREFIX = "${enc=aes256_hex, 
value=";
-  private static final String ENCRYPTED_PROPERTY_SCHEME = 
ENCRYPTED_PROPERTY_PREFIX + "%s}";
   private final Map<Long, Map<StackId, Map<String, Set<String>>>> 
clusterPasswordProperties = new ConcurrentHashMap<>(); //Map<clusterId, 
<Map<stackId, Map<configType, Set<passwordPropertyKeys>>>>;
   protected final EncryptionService encryptionService;
 
@@ -69,7 +67,7 @@ public class PropertiesEncryptor {
   }
 
   private boolean isEncryptedPassword(String password) {
-    return password != null && password.startsWith(ENCRYPTED_PROPERTY_PREFIX); 
// assuming previous encryption by this class
+    return password != null && 
password.startsWith(Encryptor.ENCRYPTED_PROPERTY_PREFIX); // assuming previous 
encryption by this class
   }
 
   private Set<String> getPasswordProperties(Cluster cluster, String 
configType) {
@@ -91,12 +89,12 @@ public class PropertiesEncryptor {
 
   private String encryptAndDecoratePropertyValue(String propertyValue) {
     final String encrypted = encryptionService.encrypt(propertyValue, 
TextEncoding.BIN_HEX);
-    return String.format(ENCRYPTED_PROPERTY_SCHEME, encrypted);
+    return String.format(Encryptor.ENCRYPTED_PROPERTY_SCHEME, encrypted);
   }
 
   private String encryptAndDecoratePropertyValue(String propertyValue, String 
encryptionKey) {
     final String encrypted = encryptionService.encrypt(propertyValue, 
encryptionKey, TextEncoding.BIN_HEX);
-    return String.format(ENCRYPTED_PROPERTY_SCHEME, encrypted);
+    return String.format(Encryptor.ENCRYPTED_PROPERTY_SCHEME, encrypted);
   }
 
   protected void decrypt(Map<String, String> configProperties) {
@@ -109,7 +107,7 @@ public class PropertiesEncryptor {
 
   private String decryptProperty(String property) {
     // sample value: ${enc=aes256_hex, value=5248...303d}
-    final String encrypted = 
property.substring(ENCRYPTED_PROPERTY_PREFIX.length(), property.indexOf('}'));
+    final String encrypted = 
property.substring(Encryptor.ENCRYPTED_PROPERTY_PREFIX.length(), 
property.indexOf('}'));
     return encryptionService.decrypt(encrypted, TextEncoding.BIN_HEX);
   }
 }
diff --git a/ambari-server/src/main/python/ambari_server/setupSecurity.py 
b/ambari-server/src/main/python/ambari_server/setupSecurity.py
index e6c47f9..7952a07 100644
--- a/ambari-server/src/main/python/ambari_server/setupSecurity.py
+++ b/ambari-server/src/main/python/ambari_server/setupSecurity.py
@@ -514,13 +514,6 @@ def setup_master_key(options):
     with open(db_password, 'r') as passwdfile:
       db_password = passwdfile.read()
 
-  ldap_password = properties.get_property(LDAP_MGR_PASSWORD_PROPERTY)
-  if ldap_password:
-    # Read clear text LDAP password from file
-    if not is_alias_string(ldap_password) and os.path.isfile(ldap_password):
-      with open(ldap_password, 'r') as passwdfile:
-        ldap_password = passwdfile.read()
-
   ts_password = properties.get_property(SSL_TRUSTSTORE_PASSWORD_PROPERTY)
   resetKey = False
   masterKey = None
@@ -550,8 +543,6 @@ def setup_master_key(options):
               " password and call 'encrypt-passwords' again."
         if db_sql_auth and db_password and is_alias_string(db_password):
           print err.format('- Database password', "'" + SETUP_ACTION + "'")
-        if ldap_password and is_alias_string(ldap_password):
-          print err.format('- LDAP manager password', "'" + LDAP_SETUP_ACTION 
+ "'")
         if ts_password and is_alias_string(ts_password):
           print err.format('TrustStore password', "'" + LDAP_SETUP_ACTION + 
"'")
 
@@ -563,8 +554,6 @@ def setup_master_key(options):
   # Read back any encrypted passwords
   if db_sql_auth  and db_password and is_alias_string(db_password):
     db_password = read_passwd_for_alias(JDBC_RCA_PASSWORD_ALIAS, masterKey)
-  if ldap_password and is_alias_string(ldap_password):
-    ldap_password = read_passwd_for_alias(LDAP_MGR_PASSWORD_ALIAS, masterKey)
   if ts_password and is_alias_string(ts_password):
     ts_password = read_passwd_for_alias(SSL_TRUSTSTORE_PASSWORD_ALIAS, 
masterKey)
   # Read master key, if non-secure or reset is true
@@ -610,15 +599,6 @@ def setup_master_key(options):
         propertyMap[JDBC_RCA_PASSWORD_FILE_PROPERTY] = 
get_alias_string(JDBC_RCA_PASSWORD_ALIAS)
   pass
 
-  if ldap_password and not is_alias_string(ldap_password):
-    retCode = save_passwd_for_alias(LDAP_MGR_PASSWORD_ALIAS, ldap_password, 
masterKey)
-    if retCode != 0:
-      print 'Failed to save secure LDAP password.'
-    else:
-      propertyMap[LDAP_MGR_PASSWORD_PROPERTY] = 
get_alias_string(LDAP_MGR_PASSWORD_ALIAS)
-      remove_password_file(LDAP_MGR_PASSWORD_FILENAME)
-  pass
-
   if ts_password and not is_alias_string(ts_password):
     retCode = save_passwd_for_alias(SSL_TRUSTSTORE_PASSWORD_ALIAS, 
ts_password, masterKey)
     if retCode != 0:
@@ -948,21 +928,10 @@ def setup_ldap(options):
 
   if save_settings:
     if isSecure:
-      if mgr_password:
-        encrypted_passwd = encrypt_password(LDAP_MGR_PASSWORD_ALIAS, 
mgr_password, options)
-        if mgr_password != encrypted_passwd:
-          ldap_property_value_map[LDAP_MGR_PASSWORD_PROPERTY] = 
encrypted_passwd
-      pass
       if ts_password:
         encrypted_passwd = encrypt_password(SSL_TRUSTSTORE_PASSWORD_ALIAS, 
ts_password, options)
         if ts_password != encrypted_passwd:
           
ldap_property_values_in_ambari_properties[SSL_TRUSTSTORE_PASSWORD_PROPERTY] = 
encrypted_passwd
-      pass
-    pass
-
-    # Persisting values
-    if mgr_password:
-      ldap_property_value_map[LDAP_MGR_PASSWORD_PROPERTY] = 
store_password_file(mgr_password, LDAP_MGR_PASSWORD_FILENAME)
 
     print 'Saving LDAP properties...'
 
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
index cb31375..fbcc7c8 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/agent/AgentResourceTest.java
@@ -36,6 +36,7 @@ import org.apache.ambari.server.actionmanager.RequestFactory;
 import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.agent.rest.AgentResource;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
@@ -362,6 +363,7 @@ public class AgentResourceTest extends RandomPortJerseyTest 
{
       bind(EncryptionService.class).to(AESEncryptionService.class);
       bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
       bind(new TypeLiteral<Encryptor<Config>>() 
{}).annotatedWith(Names.named("ConfigPropertiesEncryptor")).toInstance(Encryptor.NONE);
+      bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       bind(LdapFacade.class).toInstance(createNiceMock(LdapFacade.class));
       
bind(AmbariLdapConfigurationProvider.class).toInstance(createNiceMock(AmbariLdapConfigurationProvider.class));
     }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/alerts/AgentHeartbeatAlertRunnableTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/alerts/AgentHeartbeatAlertRunnableTest.java
index 1f0b9b2..c67be1d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/alerts/AgentHeartbeatAlertRunnableTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/alerts/AgentHeartbeatAlertRunnableTest.java
@@ -247,9 +247,6 @@ public class AgentHeartbeatAlertRunnableTest {
    *
    */
   private class MockModule implements Module {
-    /**
-     *
-     */
     @Override
     public void configure(Binder binder) {
       PartialNiceMockBinder.newBuilder().addConfigsBindings()
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKeyTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKeyTest.java
index ff92b82..6374706 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKeyTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationKeyTest.java
@@ -14,6 +14,8 @@
 
 package org.apache.ambari.server.configuration;
 
+import java.util.Set;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -56,5 +58,13 @@ public class AmbariServerConfigurationKeyTest {
 
     
Assert.assertNull(AmbariServerConfigurationKey.translate(keyWithRegex.getConfigurationCategory(),
 "ambari.tproxy.proxyuser.not.knox.invalid"));
   }
+  
+  @Test
+  public void testFindPasswordConfigurations() throws Exception {
+    final Set<String> passwordConfigurations = 
AmbariServerConfigurationKey.findPasswordConfigurations();
+    Assert.assertEquals(2, passwordConfigurations.size());
+    
Assert.assertTrue(passwordConfigurations.contains(AmbariServerConfigurationKey.BIND_PASSWORD.key()));
+    
Assert.assertTrue(passwordConfigurations.contains(AmbariServerConfigurationKey.TRUST_STORE_PASSWORD.key()));
+  }
 
 }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProviderTest.java
index 503921d..c2e10c2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationProviderTest.java
@@ -35,6 +35,7 @@ import org.apache.ambari.server.events.JpaInitializedEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
 import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.EasyMockSupport;
 import org.junit.Assert;
@@ -43,6 +44,8 @@ import org.junit.Test;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 import com.google.inject.persist.jpa.AmbariJpaPersistService;
 
 public class AmbariServerConfigurationProviderTest extends EasyMockSupport {
@@ -164,6 +167,7 @@ public class AmbariServerConfigurationProviderTest extends 
EasyMockSupport {
         
bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
         bind(AmbariJpaPersistService.class).toInstance(persistService);
         
bind(AmbariConfigurationDAO.class).toInstance(createNiceMock(AmbariConfigurationDAO.class));
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       }
     });
   }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationTest.java
index e6c69c4..4de8677 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/configuration/AmbariServerConfigurationTest.java
@@ -31,12 +31,15 @@ public class AmbariServerConfigurationTest {
 
   @Test
   public void testGetValue() {
-    AmbariServerConfiguration ambariServerConfiguration = new 
AmbariServerConfiguration() {
+    final Map<String, String> configurationMap = 
Collections.singletonMap(TPROXY_AUTHENTICATION_ENABLED.key(), "true");
 
+    final AmbariServerConfiguration ambariServerConfiguration = new 
AmbariServerConfiguration(configurationMap) {
+      @Override
+      protected AmbariServerConfigurationCategory getCategory() {
+        return null;
+      }
     };
 
-    Map<String, String> configurationMap = 
Collections.singletonMap(TPROXY_AUTHENTICATION_ENABLED.key(), "true");
-
     // Get the value specified in the configuration map
     Assert.assertEquals("true", 
ambariServerConfiguration.getValue(TPROXY_AUTHENTICATION_ENABLED, 
configurationMap));
 
@@ -48,5 +51,8 @@ public class AmbariServerConfigurationTest {
     Assert.assertEquals("defaultValue", 
ambariServerConfiguration.getValue(null, configurationMap, "defaultValue"));
     Assert.assertEquals("defaultValue", 
ambariServerConfiguration.getValue("property.name", null, "defaultValue"));
     Assert.assertNull(ambariServerConfiguration.getValue("property.name", 
Collections.emptyMap(), null));
+
+    // check toMap()
+    Assert.assertEquals(configurationMap, ambariServerConfiguration.toMap());
   }
 }
\ No newline at end of file
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandlerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandlerTest.java
index 25ce41d..0a6d9b9 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandlerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerConfigurationHandlerTest.java
@@ -39,7 +39,6 @@ import java.util.Map;
 
 import org.apache.ambari.server.AmbariException;
 import org.apache.ambari.server.api.services.RootServiceComponentConfiguration;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.events.AmbariConfigurationChangedEvent;
 import org.apache.ambari.server.events.publishers.AmbariEventPublisher;
 import org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
@@ -81,9 +80,8 @@ public class AmbariServerConfigurationHandlerTest extends 
EasyMockSupport {
     expect(ambariConfigurationDAO.findByCategory("invalid 
category")).andReturn(null).once();
 
     AmbariEventPublisher publisher = createMock(AmbariEventPublisher.class);
-    Configuration configuration = createMock(Configuration.class);
 
-    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher);
 
     replayAll();
 
@@ -121,9 +119,7 @@ public class AmbariServerConfigurationHandlerTest extends 
EasyMockSupport {
     publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
     expectLastCall().once();
 
-    Configuration configuration = createMock(Configuration.class);
-
-    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher);
 
     replayAll();
 
@@ -149,9 +145,7 @@ public class AmbariServerConfigurationHandlerTest extends 
EasyMockSupport {
     publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
     expectLastCall().times(2);
 
-    Configuration configuration = createMock(Configuration.class);
-
-    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher);
 
     replayAll();
 
@@ -183,9 +177,8 @@ public class AmbariServerConfigurationHandlerTest extends 
EasyMockSupport {
     expect(ambariConfigurationDAO.findAll()).andReturn(allEntities).once();
 
     AmbariEventPublisher publisher = createMock(AmbariEventPublisher.class);
-    Configuration configuration = createMock(Configuration.class);
 
-    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher);
 
     replayAll();
 
@@ -212,9 +205,8 @@ public class AmbariServerConfigurationHandlerTest extends 
EasyMockSupport {
     expect(ambariConfigurationDAO.findByCategory("invalid 
category")).andReturn(null).once();
 
     AmbariEventPublisher publisher = createMock(AmbariEventPublisher.class);
-    Configuration configuration = createMock(Configuration.class);
 
-    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerConfigurationHandler handler = new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher);
 
     replayAll();
 
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
index 9c93cd3..36df4a4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/AmbariServerSSOConfigurationHandlerTest.java
@@ -37,7 +37,6 @@ import 
org.apache.ambari.server.api.services.stackadvisor.StackAdvisorException;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorRequest;
 import 
org.apache.ambari.server.api.services.stackadvisor.recommendations.RecommendationResponse;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.events.AmbariConfigurationChangedEvent;
 import org.apache.ambari.server.events.AmbariEvent;
@@ -75,7 +74,6 @@ public class AmbariServerSSOConfigurationHandlerTest extends 
EasyMockSupport {
     
expect(ambariConfigurationDAO.findByCategory(SSO_CONFIGURATION.getCategoryName())).andReturn(entities).once();
 
     AmbariEventPublisher publisher = createMock(AmbariEventPublisher.class);
-    Configuration configuration = createMock(Configuration.class);
     Clusters clusters = createMock(Clusters.class);
     ConfigHelper configHelper = createMock(ConfigHelper.class);
     AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
@@ -83,7 +81,7 @@ public class AmbariServerSSOConfigurationHandlerTest extends 
EasyMockSupport {
 
     replayAll();
 
-    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher);
     handler.updateComponentCategory(SSO_CONFIGURATION.getCategoryName(), 
ssoConfigurationProperties, true);
 
     verifyAll();
@@ -134,7 +132,6 @@ public class AmbariServerSSOConfigurationHandlerTest 
extends EasyMockSupport {
     Capture<Map<String, String>> capturedUpdates = newCapture();
     Capture<Collection<String>> capturedRemovals = newCapture();
 
-    Configuration configuration = createMock(Configuration.class);
     AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
 
     AmbariConfigurationDAO ambariConfigurationDAO = 
createMock(AmbariConfigurationDAO.class);
@@ -167,7 +164,7 @@ public class AmbariServerSSOConfigurationHandlerTest 
extends EasyMockSupport {
 
     replayAll();
 
-    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher);
     handler.updateComponentCategory(SSO_CONFIGURATION.getCategoryName(), 
ssoConfigurationProperties, true);
 
     verifyAll();
@@ -193,7 +190,6 @@ public class AmbariServerSSOConfigurationHandlerTest 
extends EasyMockSupport {
     AmbariManagementController managementController = 
createMock(AmbariManagementController.class);
     StackAdvisorHelper stackAdvisorHelper = 
createMock(StackAdvisorHelper.class);
     AmbariEventPublisher publisher = createMock(AmbariEventPublisher.class);
-    Configuration configuration = createMock(Configuration.class);
 
     List<AmbariConfigurationEntity> entities = new ArrayList<>();
     AmbariConfigurationEntity entity;
@@ -215,7 +211,7 @@ public class AmbariServerSSOConfigurationHandlerTest 
extends EasyMockSupport {
 
     replayAll();
 
-    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher, 
configuration);
+    AmbariServerSSOConfigurationHandler handler = new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher);
 
     Assert.assertTrue(handler.getSSOEnabledServices().contains("SERVICE1"));
     Assert.assertTrue(handler.getSSOEnabledServices().contains("SERVICE2"));
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
index 7c70d9a..ab47984 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/GroupPrivilegeResourceProviderTest.java
@@ -29,6 +29,7 @@ import java.util.Set;
 
 import javax.persistence.EntityManager;
 
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.GroupPrivilegeResponse;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Request;
@@ -58,6 +59,7 @@ import 
org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
 import org.apache.ambari.server.security.authorization.ResourceType;
 import org.apache.ambari.server.security.authorization.Users;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.EasyMockSupport;
 import org.junit.Test;
@@ -68,6 +70,8 @@ import 
org.springframework.security.crypto.password.PasswordEncoder;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 import junit.framework.Assert;
 
@@ -350,6 +354,7 @@ public class GroupPrivilegeResourceProviderTest extends 
EasyMockSupport{
                                                        
bind(PasswordEncoder.class).toInstance(createNiceMock(PasswordEncoder.class));
                                                        
bind(HookService.class).toInstance(createMock(HookService.class));
                                                        
bind(HookContextFactory.class).toInstance(createMock(HookContextFactory.class));
+                                                       bind(new 
TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
                                                        
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
 
                                                        
bind(GroupDAO.class).toInstance(groupDAO);
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
index 0b02005..9b094b5 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/PreUpgradeCheckResourceProviderTest.java
@@ -45,6 +45,7 @@ import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.audit.AuditLogger;
 import org.apache.ambari.server.checks.UpgradeCheckRegistry;
 import org.apache.ambari.server.checks.UpgradeCheckRegistryProvider;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
@@ -362,6 +363,7 @@ public class PreUpgradeCheckResourceProviderTest extends 
EasyMockSupport {
         Provider<EntityManager> entityManagerProvider = 
createNiceMock(Provider.class);
         bind(EntityManager.class).toProvider(entityManagerProvider);
         bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
 
         requestStaticInjection(PreUpgradeCheckResourceProvider.class);
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
index f84fcf6..d2e7934 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RootServiceComponentConfigurationResourceProviderTest.java
@@ -25,8 +25,6 @@ import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.newCapture;
 
-import java.io.File;
-import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -40,9 +38,9 @@ import javax.persistence.EntityManager;
 
 import 
org.apache.ambari.server.api.services.RootServiceComponentConfigurationService;
 import org.apache.ambari.server.api.services.stackadvisor.StackAdvisorHelper;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import 
org.apache.ambari.server.configuration.AmbariServerConfigurationCategory;
 import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
-import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.RootComponent;
 import org.apache.ambari.server.controller.RootService;
@@ -60,7 +58,8 @@ import 
org.apache.ambari.server.orm.dao.AmbariConfigurationDAO;
 import org.apache.ambari.server.orm.entities.AmbariConfigurationEntity;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
-import org.apache.ambari.server.security.encryption.CredentialProvider;
+import 
org.apache.ambari.server.security.encryption.AmbariServerConfigurationEncryptor;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.Clusters;
 import org.apache.ambari.server.state.ConfigHelper;
 import org.apache.ambari.server.state.stack.OsFamily;
@@ -71,7 +70,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.powermock.api.easymock.PowerMock;
 import org.powermock.core.classloader.annotations.PrepareForTest;
 import org.powermock.modules.junit4.PowerMockRunner;
 import org.springframework.security.core.Authentication;
@@ -82,7 +80,6 @@ import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 import junit.framework.Assert;
-import junit.framework.AssertionFailedError;
 
 @RunWith(PowerMockRunner.class)
 @PrepareForTest({FileUtils.class, AmbariServerConfigurationHandler.class})
@@ -96,7 +93,6 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
   private RootServiceComponentConfigurationHandlerFactory factory;
   private Request request;
   private AmbariConfigurationDAO dao;
-  private Configuration configuration;
   private AmbariEventPublisher publisher;
   private AmbariServerLDAPConfigurationHandler 
ambariServerLDAPConfigurationHandler;
   private AmbariServerSSOConfigurationHandler 
ambariServerSSOConfigurationHandler;
@@ -108,7 +104,6 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
     predicate = createPredicate(RootService.AMBARI.name(), 
RootComponent.AMBARI_SERVER.name(), LDAP_CONFIG_CATEGORY);
     request = createMock(Request.class);
     dao = injector.getInstance(AmbariConfigurationDAO.class);
-    configuration = injector.getInstance(Configuration.class);
     factory = 
injector.getInstance(RootServiceComponentConfigurationHandlerFactory.class);
     publisher = injector.getInstance(AmbariEventPublisher.class);
     ambariServerLDAPConfigurationHandler = 
injector.getInstance(AmbariServerLDAPConfigurationHandler.class);
@@ -204,7 +199,6 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
       expect(dao.reconcileCategory(eq(SSO_CONFIG_CATEGORY), 
capture(capturedProperties2), eq(true)))
           .andReturn(true)
           .once();
-      
expect(dao.findByCategory(LDAP_CONFIG_CATEGORY)).andReturn(Collections.emptyList());
       expect(dao.findByCategory(eq(SSO_CONFIG_CATEGORY)))
           .andReturn(Collections.emptyList())
           .once();
@@ -438,7 +432,6 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
       expect(dao.reconcileCategory(eq(LDAP_CONFIG_CATEGORY), 
capture(capturedProperties1), eq(false)))
           .andReturn(true)
           .once();
-      
expect(dao.findByCategory(LDAP_CONFIG_CATEGORY)).andReturn(Collections.emptyList());
       publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
       expectLastCall().times(1);
     }
@@ -476,79 +469,6 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
     }
   }
 
-  @Test
-  public void shouldNotUpdatePasswordIfItHasNotBeenChanged() throws Exception {
-    
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
-    Set<Map<String, Object>> propertySets = new HashSet<>();
-    Map<String, String> properties = new HashMap<>();
-    properties.put(AmbariServerConfigurationKey.BIND_PASSWORD.key(), "passwd");
-    propertySets.add(toRequestProperties(LDAP_CONFIG_CATEGORY, properties));
-    setupBasicExpectations(properties, propertySets);
-    expect(configuration.isSecurityPasswordEncryptionEnabled()).andThrow(new 
AssertionFailedError()).anyTimes(); //this call should never have never been hit
-    replayAll();
-    resourceProvider.updateResources(request, predicate);
-    verifyAll();
-  }
-
-  @Test
-  public void shouldUpdatePasswordFileIfSecurityPasswordEncryptionIsDisabled() 
throws Exception {
-    
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
-    Map<String, String> properties = new HashMap<>();
-    Set<Map<String, Object>> propertySets = new HashSet<>();
-    properties.put(AmbariServerConfigurationKey.BIND_PASSWORD.key(), 
"newPasswd");
-    propertySets.add(toRequestProperties(LDAP_CONFIG_CATEGORY, properties));
-    Map<String, String> expectedProperties = new HashMap<>();
-    expectedProperties.put(AmbariServerConfigurationKey.BIND_PASSWORD.key(), 
"currentPasswd");
-    setupBasicExpectations(expectedProperties, propertySets);
-    
expect(configuration.isSecurityPasswordEncryptionEnabled()).andReturn(false).once();
-    PowerMock.mockStatic(FileUtils.class);
-    FileUtils.writeStringToFile(new File("currentPasswd"), "newPasswd", 
Charset.defaultCharset());
-    PowerMock.expectLastCall().once();
-    PowerMock.replay(FileUtils.class);
-    publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
-    expectLastCall().once();
-
-    replayAll();
-    resourceProvider.updateResources(request, predicate);
-    verifyAll();
-  }
-
-  @Test
-  public void 
shouldUpdatePasswordInCredentialStoreIfSecurityPasswordEncryptionIsEnabled() 
throws Exception {
-    
SecurityContextHolder.getContext().setAuthentication(TestAuthenticationFactory.createAdministrator());
-    Map<String, String> properties = new HashMap<>();
-    Set<Map<String, Object>> propertySets = new HashSet<>();
-    properties.put(AmbariServerConfigurationKey.BIND_PASSWORD.key(), 
"newPasswd");
-    propertySets.add(toRequestProperties(LDAP_CONFIG_CATEGORY, properties));
-    Map<String, String> expectedProperties = new HashMap<>();
-    expectedProperties.put(AmbariServerConfigurationKey.BIND_PASSWORD.key(), 
"currentPasswd");
-    setupBasicExpectations(expectedProperties, propertySets);
-    
expect(configuration.isSecurityPasswordEncryptionEnabled()).andReturn(true).once();
-
-    File masterKeyLocation = createNiceMock(File.class);
-    File masterKeyStoreLocation = createNiceMock(File.class);
-    CredentialProvider credentialProvider = 
PowerMock.createMock(CredentialProvider.class);
-    PowerMock.expectNew(CredentialProvider.class, null, null, 
configuration).andReturn(credentialProvider);
-    credentialProvider.addAliasToCredentialStore("currentPasswd", "newPasswd");
-    PowerMock.expectLastCall().once();
-    PowerMock.replay(credentialProvider, CredentialProvider.class);
-
-    publisher.publish(anyObject(AmbariConfigurationChangedEvent.class));
-    expectLastCall().once();
-
-    replayAll();
-    resourceProvider.updateResources(request, predicate);
-    verifyAll();
-    PowerMock.verify(credentialProvider, CredentialProvider.class);
-  }
-
-  private void setupBasicExpectations(Map<String, String> expectedProperties, 
Set<Map<String, Object>> propertySets) {
-    expect(request.getProperties()).andReturn(propertySets).once();
-    expect(request.getRequestInfoProperties()).andReturn(new HashMap<>());
-    
expect(dao.findByCategory(LDAP_CONFIG_CATEGORY)).andReturn(createEntities(AmbariServerConfigurationCategory.LDAP_CONFIGURATION.getCategoryName(),
 expectedProperties)).times(3);
-    expect(factory.getInstance(RootService.AMBARI.name(), 
RootComponent.AMBARI_SERVER.name(), 
LDAP_CONFIG_CATEGORY)).andReturn(ambariServerLDAPConfigurationHandler).once();
-  }
-
   private Predicate createPredicate(String serviceName, String componentName, 
String categoryName) {
     Predicate predicateService = new PredicateBuilder()
         .property(CONFIGURATION_SERVICE_NAME_PROPERTY_ID)
@@ -608,23 +528,22 @@ public class 
RootServiceComponentConfigurationResourceProviderTest extends EasyM
       protected void configure() {
         AmbariEventPublisher publisher = 
createMock(AmbariEventPublisher.class);
         AmbariConfigurationDAO ambariConfigurationDAO = 
createMock(AmbariConfigurationDAO.class);
-        Configuration configuration = createNiceMock(Configuration.class);
         Clusters clusters = createNiceMock(Clusters.class);
         ConfigHelper configHelper = createNiceMock(ConfigHelper.class);
         AmbariManagementController managementController = 
createNiceMock(AmbariManagementController.class);
         StackAdvisorHelper stackAdvisorHelper = 
createNiceMock(StackAdvisorHelper.class);
         LdapFacade ldapFacade = createNiceMock(LdapFacade.class);
+        Encryptor<AmbariServerConfiguration> encryptor = 
createNiceMock(AmbariServerConfigurationEncryptor.class);
 
         bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
-        bind(Configuration.class).toInstance(configuration);
         
bind(EntityManager.class).toInstance(createNiceMock(EntityManager.class));
         bind(AmbariConfigurationDAO.class).toInstance(ambariConfigurationDAO);
         bind(AmbariEventPublisher.class).toInstance(publisher);
 
-        bind(AmbariServerConfigurationHandler.class).toInstance(new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher, 
configuration));
-        bind(AmbariServerSSOConfigurationHandler.class).toInstance(new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher, 
configuration));
+        bind(AmbariServerConfigurationHandler.class).toInstance(new 
AmbariServerConfigurationHandler(ambariConfigurationDAO, publisher));
+        bind(AmbariServerSSOConfigurationHandler.class).toInstance(new 
AmbariServerSSOConfigurationHandler(clusters, configHelper, 
managementController, stackAdvisorHelper, ambariConfigurationDAO, publisher));
         bind(AmbariServerLDAPConfigurationHandler.class).toInstance(new 
AmbariServerLDAPConfigurationHandler(clusters, configHelper, 
managementController,
-            stackAdvisorHelper, ambariConfigurationDAO, publisher, 
configuration, ldapFacade));
+            stackAdvisorHelper, ambariConfigurationDAO, publisher, ldapFacade, 
encryptor));
         
bind(RootServiceComponentConfigurationHandlerFactory.class).toInstance(createMock(RootServiceComponentConfigurationHandlerFactory.class));
       }
     });
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
index 28ef5b7..933f6a6 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/StackUpgradeConfigurationMergeTest.java
@@ -445,7 +445,7 @@ public class StackUpgradeConfigurationMergeTest extends 
EasyMockSupport {
     public void configure(Binder binder) {
       StageDAO stageDAO = createNiceMock(StageDAO.class);
       PartialNiceMockBinder.newBuilder(StackUpgradeConfigurationMergeTest.this)
-          .addActionDBAccessorConfigsBindings().build().configure(binder);
+          
.addActionDBAccessorConfigsBindings().addPasswordEncryptorBindings().build().configure(binder);
 
       binder.bind(Clusters.class).toInstance(createNiceMock(Clusters.class));
       binder.bind(StageDAO.class).toInstance(stageDAO);
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
index 408ea78..be0dcca 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserAuthorizationResourceProviderTest.java
@@ -36,6 +36,7 @@ import 
org.apache.ambari.server.actionmanager.HostRoleCommandFactory;
 import org.apache.ambari.server.actionmanager.HostRoleCommandFactoryImpl;
 import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.AmbariManagementControllerImpl;
@@ -438,6 +439,7 @@ public class UserAuthorizationResourceProviderTest extends 
EasyMockSupport {
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
 
         bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       }
     });
   }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
index d91d260..919a313 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserPrivilegeResourceProviderTest.java
@@ -30,6 +30,7 @@ import java.util.Set;
 
 import javax.persistence.EntityManager;
 
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.UserPrivilegeResponse;
 import org.apache.ambari.server.controller.spi.Predicate;
 import org.apache.ambari.server.controller.spi.Request;
@@ -61,6 +62,7 @@ import 
org.apache.ambari.server.security.TestAuthenticationFactory;
 import org.apache.ambari.server.security.authorization.AuthorizationException;
 import org.apache.ambari.server.security.authorization.ResourceType;
 import org.apache.ambari.server.security.authorization.Users;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.EasyMockSupport;
 import org.junit.Test;
@@ -71,6 +73,8 @@ import 
org.springframework.security.crypto.password.PasswordEncoder;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 import junit.framework.Assert;
 
@@ -549,6 +553,7 @@ public class UserPrivilegeResourceProviderTest extends 
EasyMockSupport {
         
bind(ViewInstanceDAO.class).toInstance(createNiceMock(ViewInstanceDAO.class));
         bind(PrivilegeDAO.class).toInstance(createMock(PrivilegeDAO.class));
         bind(MemberDAO.class).toInstance(createMock(MemberDAO.class));
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
       }
     });
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
index 84cb5b3..b595ec4 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UserResourceProviderTest.java
@@ -45,6 +45,7 @@ import 
org.apache.ambari.server.actionmanager.HostRoleCommandFactoryImpl;
 import org.apache.ambari.server.actionmanager.RequestFactory;
 import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
@@ -440,6 +441,7 @@ public class UserResourceProviderTest extends 
EasyMockSupport {
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
 
         bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       }
     });
   }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/ldap/AmbariLdapConfigurationTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/ldap/AmbariLdapConfigurationTest.java
index 54e8083..4e69053 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/ldap/AmbariLdapConfigurationTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/ldap/AmbariLdapConfigurationTest.java
@@ -20,19 +20,13 @@ package org.apache.ambari.server.ldap;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import java.io.File;
-import java.nio.charset.Charset;
-
 import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import org.apache.ambari.server.ldap.domain.AmbariLdapConfiguration;
 import org.apache.ambari.server.security.authorization.LdapServerProperties;
-import org.apache.commons.io.FileUtils;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
 
 public class AmbariLdapConfigurationTest {
 
@@ -85,20 +79,8 @@ public class AmbariLdapConfigurationTest {
   }
 
   @Test
-  public void testGetLdapServerProperties_WrongManagerPassword() throws 
Exception {
-    configuration.setValueFor(AmbariServerConfigurationKey.BIND_PASSWORD, 
"somePassword");
-    // if it's not a store alias and is not a file, the default manager PW 
should be returned (which is null)
-    assertNull(configuration.getLdapServerProperties().getManagerPassword());
-  }
-
-  @Test
   public void testGetLdapServerProperties() throws Exception {
     final String managerPw = "ambariTest";
-    final TemporaryFolder tempFolder = new TemporaryFolder();
-    tempFolder.create();
-    final File passwordFile = tempFolder.newFile();
-    passwordFile.deleteOnExit();
-    FileUtils.writeStringToFile(passwordFile, managerPw, 
Charset.defaultCharset());
 
     configuration.setValueFor(AmbariServerConfigurationKey.SERVER_HOST, 
"host");
     configuration.setValueFor(AmbariServerConfigurationKey.SERVER_PORT, "1");
@@ -107,7 +89,7 @@ public class AmbariLdapConfigurationTest {
     configuration.setValueFor(AmbariServerConfigurationKey.USE_SSL, "true");
     configuration.setValueFor(AmbariServerConfigurationKey.ANONYMOUS_BIND, 
"true");
     configuration.setValueFor(AmbariServerConfigurationKey.BIND_DN, "5");
-    configuration.setValueFor(AmbariServerConfigurationKey.BIND_PASSWORD, 
passwordFile.getAbsolutePath());
+    configuration.setValueFor(AmbariServerConfigurationKey.BIND_PASSWORD, 
managerPw);
     configuration.setValueFor(AmbariServerConfigurationKey.USER_SEARCH_BASE, 
"7");
     
configuration.setValueFor(AmbariServerConfigurationKey.USER_NAME_ATTRIBUTE, 
"8");
     configuration.setValueFor(AmbariServerConfigurationKey.USER_BASE, "9");
@@ -137,7 +119,6 @@ public class AmbariLdapConfigurationTest {
     assertEquals("14", ldapProperties.getGroupNamingAttr());
     assertEquals("15", ldapProperties.getAdminGroupMappingRules());
     assertEquals("16", ldapProperties.getGroupSearchFilter());
-    tempFolder.delete();
   }
 
 }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AbstractAuthenticationProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AbstractAuthenticationProviderTest.java
index d623a81..ecb991d 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AbstractAuthenticationProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/AbstractAuthenticationProviderTest.java
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue;
 
 import javax.persistence.EntityManager;
 
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.hooks.HookContextFactory;
 import org.apache.ambari.server.hooks.HookService;
@@ -33,6 +34,7 @@ import 
org.apache.ambari.server.ldap.service.AmbariLdapConfigurationProvider;
 import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.entities.UserEntity;
 import org.apache.ambari.server.security.authorization.Users;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.EasyMockSupport;
 import org.junit.After;
@@ -46,6 +48,8 @@ import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Module;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 public abstract class AbstractAuthenticationProviderTest extends 
EasyMockSupport {
 
@@ -197,6 +201,7 @@ public abstract class AbstractAuthenticationProviderTest 
extends EasyMockSupport
         bind(OsFamily.class).toInstance(createNiceMock(OsFamily.class));
         bind(HookService.class).toInstance(createMock(HookService.class));
         
bind(HookContextFactory.class).toInstance(createMock(HookContextFactory.class));
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
 
         bind(Users.class).toInstance(users);
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/AmbariJwtAuthenticationFilterTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/AmbariJwtAuthenticationFilterTest.java
index 2dac365..e8687c5 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/AmbariJwtAuthenticationFilterTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/AmbariJwtAuthenticationFilterTest.java
@@ -38,13 +38,16 @@ import java.security.interfaces.RSAPublicKey;
 import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.servlet.FilterChain;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.orm.entities.UserAuthenticationEntity;
 import org.apache.ambari.server.orm.entities.UserEntity;
@@ -55,6 +58,7 @@ import 
org.apache.ambari.server.security.authentication.AmbariAuthenticationFilt
 import org.apache.ambari.server.security.authorization.User;
 import org.apache.ambari.server.security.authorization.UserAuthenticationType;
 import org.apache.ambari.server.security.authorization.Users;
+import org.apache.commons.lang.StringUtils;
 import org.easymock.Capture;
 import org.easymock.CaptureType;
 import org.easymock.EasyMockSupport;
@@ -100,11 +104,12 @@ public class AmbariJwtAuthenticationFilterTest extends 
EasyMockSupport {
   }
 
   private JwtAuthenticationProperties createTestProperties(List<String> 
audiences) {
-    JwtAuthenticationProperties properties = new 
JwtAuthenticationProperties(Collections.emptyMap());
-    properties.setCookieName("non-default");
+    final Map<String, String> configurationMap = new HashMap<>();
+    
configurationMap.put(AmbariServerConfigurationKey.SSO_JWT_COOKIE_NAME.key(), 
"non-default");
+    configurationMap.put(AmbariServerConfigurationKey.SSO_JWT_AUDIENCES.key(), 
audiences == null || audiences.isEmpty() ? "" : StringUtils.join(audiences, 
","));
+    
configurationMap.put(AmbariServerConfigurationKey.SSO_AUTHENTICATION_ENABLED.key(),
 "true");
+    JwtAuthenticationProperties properties = new 
JwtAuthenticationProperties(configurationMap);
     properties.setPublicKey(publicKey);
-    properties.setAudiences(audiences);
-    properties.setEnabledForAmbari(true);
 
     return properties;
   }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationPropertiesTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationPropertiesTest.java
index 3e46dc6..6f89c26 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationPropertiesTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/jwt/JwtAuthenticationPropertiesTest.java
@@ -23,30 +23,32 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
+import org.apache.ambari.server.configuration.AmbariServerConfigurationKey;
 import org.junit.Test;
 
 public class JwtAuthenticationPropertiesTest {
 
   @Test
   public void testSetNullAudiences() {
-    JwtAuthenticationProperties jwtAuthenticationProperties = new 
JwtAuthenticationProperties(Collections.emptyMap());
-    jwtAuthenticationProperties.setAudiencesString(null);
-    assertNull(jwtAuthenticationProperties.getAudiences());
+    assertNull(new 
JwtAuthenticationProperties(Collections.emptyMap()).getAudiences());
   }
 
   @Test
   public void testSetEmptyAudiences() {
-    JwtAuthenticationProperties jwtAuthenticationProperties = new 
JwtAuthenticationProperties(Collections.emptyMap());
-    jwtAuthenticationProperties.setAudiencesString("");
-    assertNull(jwtAuthenticationProperties.getAudiences());
+    final Map<String, String> configurationMap = new HashMap<>();
+    configurationMap.put(AmbariServerConfigurationKey.SSO_JWT_AUDIENCES.key(), 
"");
+    assertNull(new 
JwtAuthenticationProperties(configurationMap).getAudiences());
   }
 
   @Test
   public void testSetValidAudiences() {
-    String[] expectedAudiences = {"first", "second", "third"};
-    JwtAuthenticationProperties jwtAuthenticationProperties = new 
JwtAuthenticationProperties(Collections.emptyMap());
-    jwtAuthenticationProperties.setAudiencesString("first,second,third");
+    final String[] expectedAudiences = {"first", "second", "third"};
+    final Map<String, String> configurationMap = new HashMap<>();
+    configurationMap.put(AmbariServerConfigurationKey.SSO_JWT_AUDIENCES.key(), 
"first,second,third");
+    final JwtAuthenticationProperties jwtAuthenticationProperties = new 
JwtAuthenticationProperties(configurationMap);
     assertNotNull(jwtAuthenticationProperties.getAudiences());
     assertArrayEquals(expectedAudiences, 
jwtAuthenticationProperties.getAudiences().toArray(new String[]{}));
   }
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/pam/AmbariPamAuthenticationProviderTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/pam/AmbariPamAuthenticationProviderTest.java
index 11298a1..d5a0854 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/pam/AmbariPamAuthenticationProviderTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authentication/pam/AmbariPamAuthenticationProviderTest.java
@@ -26,6 +26,7 @@ import java.util.Properties;
 
 import javax.persistence.EntityManager;
 
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.hooks.HookContextFactory;
 import org.apache.ambari.server.hooks.HookService;
@@ -42,6 +43,7 @@ import org.apache.ambari.server.security.authorization.User;
 import org.apache.ambari.server.security.authorization.UserAuthenticationType;
 import org.apache.ambari.server.security.authorization.UserName;
 import org.apache.ambari.server.security.authorization.Users;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.EasyMockSupport;
 import org.junit.Before;
@@ -58,6 +60,8 @@ import 
org.springframework.security.crypto.password.StandardPasswordEncoder;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 import junit.framework.Assert;
 
@@ -100,6 +104,7 @@ public class AmbariPamAuthenticationProviderTest extends 
EasyMockSupport {
         bind(PasswordEncoder.class).toInstance(new StandardPasswordEncoder());
         bind(Users.class).toInstance(users);
         bind(Configuration.class).toInstance(configuration);
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
       }
     });
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
index 2e9e9e0..459bccb 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/AmbariAuthorizationFilterTest.java
@@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.ambari.server.audit.AuditLogger;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.hooks.HookContextFactory;
 import org.apache.ambari.server.hooks.HookService;
@@ -41,6 +42,7 @@ import org.apache.ambari.server.orm.DBAccessor;
 import org.apache.ambari.server.orm.dao.UserDAO;
 import org.apache.ambari.server.security.AmbariEntryPoint;
 import org.apache.ambari.server.security.TestAuthenticationFactory;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.apache.ambari.server.view.ViewRegistry;
 import org.easymock.EasyMock;
@@ -56,6 +58,8 @@ import com.google.common.collect.Table.Cell;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 import junit.framework.Assert;
 
@@ -338,6 +342,7 @@ public class AmbariAuthorizationFilterTest {
         
bind(AuditLogger.class).toInstance(EasyMock.createNiceMock(AuditLogger.class));
         
bind(HookService.class).toInstance(EasyMock.createMock(HookService.class));
         
bind(HookContextFactory.class).toInstance(EasyMock.createMock(HookContextFactory.class));
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(EasyMock.createMock(AmbariLdapConfigurationProvider.class));
       }
     });
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/UsersTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/UsersTest.java
index cdb10be..b32f114 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/UsersTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/security/authorization/UsersTest.java
@@ -35,6 +35,7 @@ import javax.annotation.Nullable;
 import javax.persistence.EntityManager;
 
 import org.apache.ambari.server.AmbariException;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.hooks.HookContextFactory;
 import org.apache.ambari.server.hooks.HookService;
@@ -50,6 +51,7 @@ import org.apache.ambari.server.orm.entities.PermissionEntity;
 import org.apache.ambari.server.orm.entities.PrincipalEntity;
 import org.apache.ambari.server.orm.entities.PrivilegeEntity;
 import org.apache.ambari.server.orm.entities.UserEntity;
+import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.state.stack.OsFamily;
 import org.easymock.Capture;
 import org.easymock.EasyMock;
@@ -60,6 +62,8 @@ import 
org.springframework.security.crypto.password.PasswordEncoder;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.TypeLiteral;
+import com.google.inject.name.Names;
 
 import junit.framework.Assert;
 
@@ -205,6 +209,7 @@ public class UsersTest extends EasyMockSupport {
         
bind(HookContextFactory.class).toInstance(createMock(HookContextFactory.class));
         bind(PrincipalDAO.class).toInstance(createMock(PrincipalDAO.class));
         
bind(Configuration.class).toInstance(createNiceMock(Configuration.class));
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
       }
     });
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
index cb29533..1eaf594 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/kerberos/AbstractPrepareKerberosServerActionTest.java
@@ -47,6 +47,7 @@ import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.agent.CommandReport;
 import org.apache.ambari.server.api.services.AmbariMetaInfo;
 import org.apache.ambari.server.audit.AuditLogger;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
@@ -234,6 +235,7 @@ public class AbstractPrepareKerberosServerActionTest 
extends EasyMockSupport {
         
bind(MpackManagerFactory.class).toInstance(createNiceMock(MpackManagerFactory.class));
         
bind(AmbariLdapConfigurationProvider.class).toInstance(createMock(AmbariLdapConfigurationProvider.class));
         bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+        bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       }
     });
 
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosActionTest.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosActionTest.java
index 8ad0b7c..7a1aae2 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosActionTest.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/serveraction/upgrades/PreconfigureKerberosActionTest.java
@@ -71,7 +71,6 @@ import 
org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
 import org.apache.ambari.server.controller.KerberosHelperImpl;
 import org.apache.ambari.server.controller.RootServiceResponseFactory;
-import org.apache.ambari.server.events.AgentConfigsUpdateEvent;
 import org.apache.ambari.server.events.AmbariEvent;
 import org.apache.ambari.server.hooks.AmbariEventFactory;
 import org.apache.ambari.server.hooks.HookContext;
@@ -96,7 +95,6 @@ import org.apache.ambari.server.orm.entities.UpgradeEntity;
 import org.apache.ambari.server.scheduler.ExecutionScheduler;
 import org.apache.ambari.server.scheduler.ExecutionSchedulerImpl;
 import org.apache.ambari.server.security.encryption.CredentialStoreService;
-import org.apache.ambari.server.security.encryption.Encryptor;
 import org.apache.ambari.server.stack.StackManagerFactory;
 import org.apache.ambari.server.stack.upgrade.Direction;
 import org.apache.ambari.server.stack.upgrade.orchestrate.UpgradeContext;
@@ -154,7 +152,6 @@ import com.google.gson.reflect.TypeToken;
 import com.google.inject.AbstractModule;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
-import com.google.inject.TypeLiteral;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
 import com.google.inject.name.Names;
 
@@ -616,7 +613,7 @@ public class PreconfigureKerberosActionTest extends 
EasyMockSupport {
       @Override
       protected void configure() {
         PartialNiceMockBinder.newBuilder(PreconfigureKerberosActionTest.this)
-            
.addActionDBAccessorConfigsBindings().addLdapBindings().build().configure(binder());
+            
.addActionDBAccessorConfigsBindings().addLdapBindings().addPasswordEncryptorBindings().build().configure(binder());
 
         bind(EntityManager.class).toInstance(createMock(EntityManager.class));
         bind(DBAccessor.class).toInstance(createMock(DBAccessor.class));
@@ -657,7 +654,6 @@ public class PreconfigureKerberosActionTest extends 
EasyMockSupport {
         bind(HostDAO.class).toInstance(createMock(HostDAO.class));
         bind(ExecutionScheduler.class).to(ExecutionSchedulerImpl.class);
         bind(ActionDBAccessor.class).to(ActionDBAccessorImpl.class);
-        bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
 
         install(new FactoryModuleBuilder().implement(HookContext.class, 
PostUserCreationHookContext.class)
             .build(HookContextFactory.class));
diff --git 
a/ambari-server/src/test/java/org/apache/ambari/server/testutils/PartialNiceMockBinder.java
 
b/ambari-server/src/test/java/org/apache/ambari/server/testutils/PartialNiceMockBinder.java
index 9989f75..a6162ff 100644
--- 
a/ambari-server/src/test/java/org/apache/ambari/server/testutils/PartialNiceMockBinder.java
+++ 
b/ambari-server/src/test/java/org/apache/ambari/server/testutils/PartialNiceMockBinder.java
@@ -33,6 +33,7 @@ import org.apache.ambari.server.actionmanager.StageFactory;
 import org.apache.ambari.server.actionmanager.StageFactoryImpl;
 import org.apache.ambari.server.audit.AuditLogger;
 import org.apache.ambari.server.audit.AuditLoggerDefaultImpl;
+import org.apache.ambari.server.configuration.AmbariServerConfiguration;
 import org.apache.ambari.server.controller.AbstractRootServiceResponseFactory;
 import org.apache.ambari.server.controller.AmbariManagementController;
 import org.apache.ambari.server.controller.KerberosHelper;
@@ -218,6 +219,7 @@ public class PartialNiceMockBinder implements Module {
         
binder.bind(EncryptionService.class).toInstance(easyMockSupport.createNiceMock(EncryptionService.class));
         binder.bind(new TypeLiteral<Encryptor<Config>>() 
{}).annotatedWith(Names.named("ConfigPropertiesEncryptor")).toInstance(Encryptor.NONE);
         binder.bind(new TypeLiteral<Encryptor<AgentConfigsUpdateEvent>>() 
{}).annotatedWith(Names.named("AgentConfigEncryptor")).toInstance(Encryptor.NONE);
+        binder.bind(new TypeLiteral<Encryptor<AmbariServerConfiguration>>() 
{}).annotatedWith(Names.named("AmbariServerConfigurationEncryptor")).toInstance(Encryptor.NONE);
       });
       return this;
     }
diff --git a/ambari-server/src/test/python/TestAmbariServer.py 
b/ambari-server/src/test/python/TestAmbariServer.py
index b868471..ebf0a9d 100644
--- a/ambari-server/src/test/python/TestAmbariServer.py
+++ b/ambari-server/src/test/python/TestAmbariServer.py
@@ -6751,7 +6751,6 @@ class TestAmbariServer(TestCase):
     p = Properties()
     FAKE_PWD_STRING = "fakepasswd"
     p.process_pair(JDBC_PASSWORD_PROPERTY, FAKE_PWD_STRING)
-    p.process_pair(LDAP_MGR_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(SSL_TRUSTSTORE_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(JDBC_RCA_PASSWORD_FILE_PROPERTY, FAKE_PWD_STRING)
     get_ambari_properties_method.return_value = p
@@ -6773,15 +6772,13 @@ class TestAmbariServer(TestCase):
     self.assertTrue(update_properties_method.called)
     self.assertFalse(save_master_key_method.called)
     self.assertTrue(save_passwd_for_alias_method.called)
-    self.assertEquals(3, save_passwd_for_alias_method.call_count)
+    self.assertEquals(2, save_passwd_for_alias_method.call_count)
     self.assertTrue(remove_password_file_method.called)
 
     result_expected = {JDBC_PASSWORD_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
                        JDBC_RCA_PASSWORD_FILE_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
-                       LDAP_MGR_PASSWORD_PROPERTY:
-                         get_alias_string(LDAP_MGR_PASSWORD_ALIAS),
                        SSL_TRUSTSTORE_PASSWORD_PROPERTY:
                          get_alias_string(SSL_TRUSTSTORE_PASSWORD_ALIAS),
                        SECURITY_IS_ENCRYPTION_ENABLED: 'true'}
@@ -6882,7 +6879,6 @@ class TestAmbariServer(TestCase):
     p = Properties()
     FAKE_PWD_STRING = '${alias=fakealias}'
     p.process_pair(JDBC_PASSWORD_PROPERTY, FAKE_PWD_STRING)
-    p.process_pair(LDAP_MGR_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(SSL_TRUSTSTORE_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(JDBC_RCA_PASSWORD_FILE_PROPERTY, FAKE_PWD_STRING)
     get_ambari_properties_method.return_value = p
@@ -6902,15 +6898,13 @@ class TestAmbariServer(TestCase):
     self.assertTrue(read_master_key_method.called)
     self.assertTrue(update_properties_method.called)
     self.assertTrue(read_passwd_for_alias_method.called)
-    self.assertTrue(3, read_passwd_for_alias_method.call_count)
-    self.assertTrue(3, save_passwd_for_alias_method.call_count)
+    self.assertTrue(2, read_passwd_for_alias_method.call_count)
+    self.assertTrue(2, save_passwd_for_alias_method.call_count)
 
     result_expected = {JDBC_PASSWORD_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
                        JDBC_RCA_PASSWORD_FILE_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
-                       LDAP_MGR_PASSWORD_PROPERTY:
-                         get_alias_string(LDAP_MGR_PASSWORD_ALIAS),
                        SSL_TRUSTSTORE_PASSWORD_PROPERTY:
                          get_alias_string(SSL_TRUSTSTORE_PASSWORD_ALIAS),
                        SECURITY_IS_ENCRYPTION_ENABLED: 'true'}
@@ -6991,7 +6985,6 @@ class TestAmbariServer(TestCase):
     p = Properties()
     FAKE_PWD_STRING = '${alias=fakealias}'
     p.process_pair(JDBC_PASSWORD_PROPERTY, FAKE_PWD_STRING)
-    p.process_pair(LDAP_MGR_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(SSL_TRUSTSTORE_PASSWORD_PROPERTY, FAKE_PWD_STRING)
     p.process_pair(JDBC_RCA_PASSWORD_FILE_PROPERTY, FAKE_PWD_STRING)
     get_ambari_properties_method.return_value = p
@@ -7012,16 +7005,14 @@ class TestAmbariServer(TestCase):
     self.assertTrue(get_validated_string_input_method.called)
     self.assertTrue(update_properties_method.called)
     self.assertTrue(read_passwd_for_alias_method.called)
-    self.assertTrue(3, read_passwd_for_alias_method.call_count)
-    self.assertTrue(3, save_passwd_for_alias_method.call_count)
+    self.assertTrue(2, read_passwd_for_alias_method.call_count)
+    self.assertTrue(2, save_passwd_for_alias_method.call_count)
     self.assertFalse(save_master_key_method.called)
 
     result_expected = {JDBC_PASSWORD_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
                        JDBC_RCA_PASSWORD_FILE_PROPERTY:
                          get_alias_string(JDBC_RCA_PASSWORD_ALIAS),
-                       LDAP_MGR_PASSWORD_PROPERTY:
-                         get_alias_string(LDAP_MGR_PASSWORD_ALIAS),
                        SSL_TRUSTSTORE_PASSWORD_PROPERTY:
                          get_alias_string(SSL_TRUSTSTORE_PASSWORD_ALIAS),
                        SECURITY_IS_ENCRYPTION_ENABLED: 'true'}
@@ -7261,7 +7252,7 @@ class TestAmbariServer(TestCase):
         "ambari.ldap.connectivity.bind_dn": "test",
         "ambari.ldap.advanced.referrals": "test",
         "client.security": "ldap",
-        LDAP_MGR_PASSWORD_PROPERTY: "ldap-password.dat",
+        LDAP_MGR_PASSWORD_PROPERTY: "dummyPassword",
         "ambari.ldap.authentication.enabled": "true"
       }
     return ldap_properties_map
@@ -7290,7 +7281,7 @@ class TestAmbariServer(TestCase):
         "ambari.ldap.attributes.group.name_attr": "test",
         "ambari.ldap.attributes.dn_attr": "test",
         "ambari.ldap.advanced.referrals": "test",
-        LDAP_MGR_PASSWORD_PROPERTY: "ldap-password.dat",
+        LDAP_MGR_PASSWORD_PROPERTY: "dummyPassword",
         "ambari.ldap.authentication.enabled": "true",
         "ambari.ldap.manage_services": "true",
         "ambari.ldap.enabled_services":"ZOOKEEPER",
@@ -7343,7 +7334,7 @@ class TestAmbariServer(TestCase):
     properties.process_pair(CLIENT_API_PORT_PROPERTY, '8080')
 
     get_ambari_properties_method.return_value = properties
-    configure_ldap_password_method.return_value = "password"
+    configure_ldap_password_method.return_value = "dummyPassword"
     save_passwd_for_alias_method.return_value = 0
     encrypt_password_method.return_value = 
get_alias_string(LDAP_MGR_PASSWORD_ALIAS)
 

Reply via email to