|
@@ -210,7 +210,6 @@ public class HttpExporter extends Exporter {
|
|
|
HttpExporter.AUTH_USERNAME_SETTING.getNamespace(
|
|
|
HttpExporter.AUTH_USERNAME_SETTING.getConcreteSetting(key));
|
|
|
|
|
|
- // password must be specified along with username for any auth
|
|
|
if (Strings.isNullOrEmpty(username) == false) {
|
|
|
final String type =
|
|
|
(String) settings.get(Exporter.TYPE_SETTING.getConcreteSettingForNamespace(namespace));
|
|
@@ -218,11 +217,6 @@ public class HttpExporter extends Exporter {
|
|
|
throw new SettingsException("username for [" + key + "] is set but type is [" + type + "]");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // it would be ideal to validate that just one of either AUTH_PASSWORD_SETTING or
|
|
|
- // AUTH_SECURE_PASSWORD_SETTING were present here, but that is not currently possible with the settings
|
|
|
- // validation framework.
|
|
|
- // https://github.com/elastic/elasticsearch/issues/51332
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -241,52 +235,6 @@ public class HttpExporter extends Exporter {
|
|
|
Property.NodeScope,
|
|
|
Property.Filtered),
|
|
|
TYPE_DEPENDENCY);
|
|
|
- /**
|
|
|
- * Password for basic auth.
|
|
|
- */
|
|
|
- public static final Setting.AffixSetting<String> AUTH_PASSWORD_SETTING =
|
|
|
- Setting.affixKeySetting("xpack.monitoring.exporters.","auth.password",
|
|
|
- (key) -> Setting.simpleString(key,
|
|
|
- new Setting.Validator<String>() {
|
|
|
- @Override
|
|
|
- public void validate(String password) {
|
|
|
- // no password validation that is independent of other settings
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void validate(String password, Map<Setting<?>, Object> settings) {
|
|
|
- final String namespace =
|
|
|
- HttpExporter.AUTH_PASSWORD_SETTING.getNamespace(
|
|
|
- HttpExporter.AUTH_PASSWORD_SETTING.getConcreteSetting(key));
|
|
|
- final String username =
|
|
|
- (String) settings.get(AUTH_USERNAME_SETTING.getConcreteSettingForNamespace(namespace));
|
|
|
-
|
|
|
- // username is required for any auth
|
|
|
- if (Strings.isNullOrEmpty(username)) {
|
|
|
- if (Strings.isNullOrEmpty(password) == false) {
|
|
|
- throw new IllegalArgumentException(
|
|
|
- "[" + AUTH_PASSWORD_SETTING.getConcreteSettingForNamespace(namespace).getKey() + "] without [" +
|
|
|
- AUTH_USERNAME_SETTING.getConcreteSettingForNamespace(namespace).getKey() + "]");
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public Iterator<Setting<?>> settings() {
|
|
|
- final String namespace =
|
|
|
- HttpExporter.AUTH_PASSWORD_SETTING.getNamespace(
|
|
|
- HttpExporter.AUTH_PASSWORD_SETTING.getConcreteSetting(key));
|
|
|
- final List<Setting<?>> settings = List.of(
|
|
|
- HttpExporter.AUTH_USERNAME_SETTING.getConcreteSettingForNamespace(namespace));
|
|
|
- return settings.iterator();
|
|
|
- }
|
|
|
-
|
|
|
- },
|
|
|
- Property.Dynamic,
|
|
|
- Property.NodeScope,
|
|
|
- Property.Filtered,
|
|
|
- Property.Deprecated),
|
|
|
- TYPE_DEPENDENCY);
|
|
|
/**
|
|
|
* Secure password for basic auth.
|
|
|
*/
|
|
@@ -757,18 +705,8 @@ public class HttpExporter extends Exporter {
|
|
|
private static CredentialsProvider createCredentialsProvider(final Config config) {
|
|
|
final String username = AUTH_USERNAME_SETTING.getConcreteSettingForNamespace(config.name()).get(config.settings());
|
|
|
|
|
|
- final String deprecatedPassword = AUTH_PASSWORD_SETTING.getConcreteSettingForNamespace(config.name()).get(config.settings());
|
|
|
final SecureString securePassword = SECURE_AUTH_PASSWORDS.get(config.name());
|
|
|
- final String password;
|
|
|
- if (securePassword != null) {
|
|
|
- password = securePassword.toString();
|
|
|
- if (Strings.isNullOrEmpty(deprecatedPassword) == false) {
|
|
|
- logger.warn("exporter [{}] specified both auth.secure_password and auth.password. using auth.secure_password and " +
|
|
|
- "ignoring auth.password", config.name());
|
|
|
- }
|
|
|
- } else {
|
|
|
- password = deprecatedPassword;
|
|
|
- }
|
|
|
+ final String password = securePassword != null ? securePassword.toString() : null;
|
|
|
|
|
|
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
|
|
|
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
|
|
@@ -934,9 +872,9 @@ public class HttpExporter extends Exporter {
|
|
|
}
|
|
|
|
|
|
public static List<Setting.AffixSetting<?>> getDynamicSettings() {
|
|
|
- return Arrays.asList(HOST_SETTING, TEMPLATE_CREATE_LEGACY_VERSIONS_SETTING, AUTH_PASSWORD_SETTING, AUTH_USERNAME_SETTING,
|
|
|
- BULK_TIMEOUT_SETTING, CONNECTION_READ_TIMEOUT_SETTING, CONNECTION_TIMEOUT_SETTING, PIPELINE_CHECK_TIMEOUT_SETTING,
|
|
|
- PROXY_BASE_PATH_SETTING, SNIFF_ENABLED_SETTING, TEMPLATE_CHECK_TIMEOUT_SETTING, SSL_SETTING, HEADERS_SETTING);
|
|
|
+ return Arrays.asList(HOST_SETTING, TEMPLATE_CREATE_LEGACY_VERSIONS_SETTING, AUTH_USERNAME_SETTING, BULK_TIMEOUT_SETTING,
|
|
|
+ CONNECTION_READ_TIMEOUT_SETTING, CONNECTION_TIMEOUT_SETTING, PIPELINE_CHECK_TIMEOUT_SETTING, PROXY_BASE_PATH_SETTING,
|
|
|
+ SNIFF_ENABLED_SETTING, TEMPLATE_CHECK_TIMEOUT_SETTING, SSL_SETTING, HEADERS_SETTING);
|
|
|
}
|
|
|
|
|
|
public static List<Setting.AffixSetting<?>> getSecureSettings() {
|