basic auth for datanode rest api if security enabled (#16446)

* basic auth for datanode rest api if security enabled

* added changelog

* adapted to master changes

* configurable rest admin username in datanode

---------

Co-authored-by: Jan Heise <jan.heise@graylog.com>
This commit is contained in:
Tomas Dvorak
2023-09-15 20:52:14 +02:00
committed by GitHub
parent a401e81b27
commit 70d6edc8a2
11 changed files with 223 additions and 87 deletions

View File

@@ -43,6 +43,7 @@ import org.graylog.datanode.configuration.variants.OpensearchSecurityConfigurati
import org.graylog.datanode.management.OpensearchConfigurationChangeEvent;
import org.graylog.datanode.process.OpensearchConfiguration;
import org.graylog.security.certutil.CertConstants;
import org.graylog2.bootstrap.preflight.web.BasicAuthFilter;
import org.graylog2.configuration.TLSProtocolsConfiguration;
import org.graylog2.plugin.inject.Graylog2Module;
import org.graylog2.rest.MoreMediaTypes;
@@ -223,11 +224,17 @@ public class JerseyService extends AbstractIdleService {
int maxHeaderSize,
boolean enableGzip,
Set<Resource> additionalResources) {
final boolean isSecuredInstance = sslEngineConfigurator != null;
final ResourceConfig resourceConfig = buildResourceConfig(additionalResources);
if(isSecuredInstance) {
resourceConfig.register(new BasicAuthFilter(configuration.getRootUsername(), configuration.getRootPasswordSha2(), "Datanode"));
}
final HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(
listenUri,
resourceConfig,
sslEngineConfigurator != null,
isSecuredInstance,
sslEngineConfigurator,
false);