class AmbariServerSSOConfigurationHandler extends AmbariServerConfigurationHandler {

  @Override
  public void updateComponentCategory(String categoryName, Map<String, String> properties, boolean removePropertiesIfNotSpecified) throws AmbariException {
    // Use the default implementation of #updateComponentCategory; however if Ambari is managing the SSO implementations
    // always process them, even the of sso-configuration properties have not been changed since we do not
    // know of the Ambari SSO data has changed in the ambari.properties file.  For example the authentication.jwt.providerUrl
    // or authentication.jwt.publicKey values.
    super.updateComponentCategory(categoryName, properties, removePropertiesIfNotSpecified);

    // Determine if Ambari is managing SSO configurations...
    boolean manageSSOConfigurations;

    Map<String, String> ssoProperties = getConfigurationProperties(SSO_CONFIGURATION.getCategoryName());
    manageSSOConfigurations = (ssoProperties != null) && "true".equalsIgnoreCase(ssoProperties.get(SSO_MANAGE_SERVICES.key()));

    if (manageSSOConfigurations) {
      Map<String, Cluster> clusterMap = clusters.getClusters();

      if (clusterMap != null) {
        for (Cluster cluster : clusterMap.values()) {
          try {
            LOGGER.info(String.format("Managing the SSO configuration for the cluster named '%s'", cluster.getClusterName()));
            processCluster(cluster);
          } catch (AmbariException | StackAdvisorException e) {
            LOGGER.warn(String.format("Failed to update the the SSO configuration for the cluster named '%s': ", cluster.getClusterName()), e);
          }
        }
      }
    }
  }

  @Inject public  AmbariServerSSOConfigurationHandler(Clusters clusters, ConfigHelper configHelper,
                                             AmbariManagementController managementController,
                                             StackAdvisorHelper stackAdvisorHelper,
                                             AmbariConfigurationDAO ambariConfigurationDAO,
                                             AmbariEventPublisher publisher,
                                             Configuration ambariConfiguration);

}