mirror of
https://github.com/keycloak/keycloak.git
synced 2026-05-03 21:50:47 -05:00
KEYCLOAK-8349 KEYCLOAK-8659 Use TLS for all tests in the suite
This commit is contained in:
committed by
Pedro Igor
parent
885eec5ef2
commit
ee41a0450f
+8
-1
@@ -25,7 +25,6 @@ public abstract class AbstractAuthOptionsCmd extends AbstractGlobalOptionsCmd {
|
||||
|
||||
static final String DEFAULT_CLIENT = "admin-cli";
|
||||
|
||||
|
||||
@Option(name = "config", description = "Path to the config file (~/.keycloak/kcreg.config by default)", hasValue = true)
|
||||
protected String config;
|
||||
|
||||
@@ -68,6 +67,9 @@ public abstract class AbstractAuthOptionsCmd extends AbstractGlobalOptionsCmd {
|
||||
@Option(name = "trustpass", description = "Truststore password (prompted for if not specified and --truststore is used)", hasValue = true)
|
||||
protected String trustPass;
|
||||
|
||||
@Option(name = "insecure", description = "Turns off TLS validation", hasValue = false)
|
||||
protected boolean insecure;
|
||||
|
||||
@Option(shortName = 't', name = "token", description = "Initial / Registration access token to use)", hasValue = true)
|
||||
protected String token;
|
||||
|
||||
@@ -90,6 +92,7 @@ public abstract class AbstractAuthOptionsCmd extends AbstractGlobalOptionsCmd {
|
||||
trustStore = parent.trustStore;
|
||||
trustPass = parent.trustPass;
|
||||
token = parent.token;
|
||||
insecure = parent.insecure;
|
||||
}
|
||||
|
||||
protected void applyDefaultOptionValues() {
|
||||
@@ -152,6 +155,10 @@ public abstract class AbstractAuthOptionsCmd extends AbstractGlobalOptionsCmd {
|
||||
throw new RuntimeException("Failed to load truststore: " + truststore, e);
|
||||
}
|
||||
}
|
||||
|
||||
if (insecure) {
|
||||
HttpUtil.setSkipCertificateValidation();
|
||||
}
|
||||
}
|
||||
|
||||
protected ConfigData ensureAuthInfo(ConfigData config, CommandInvocation commandInvocation) {
|
||||
|
||||
+23
-1
@@ -28,6 +28,8 @@ import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.client.methods.HttpPut;
|
||||
import org.apache.http.client.methods.HttpRequestBase;
|
||||
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
|
||||
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
|
||||
import org.apache.http.ssl.SSLContextBuilder;
|
||||
import org.apache.http.ssl.SSLContexts;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
@@ -46,6 +48,7 @@ import java.security.KeyStoreException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.cert.CertificateException;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
|
||||
@@ -59,6 +62,7 @@ public class HttpUtil {
|
||||
|
||||
private static HttpClient httpClient;
|
||||
private static SSLConnectionSocketFactory sslsf;
|
||||
private static final AtomicBoolean tlsWarningEmitted = new AtomicBoolean();
|
||||
|
||||
public static InputStream doGet(String url, String acceptType, String authorization) {
|
||||
try {
|
||||
@@ -181,8 +185,26 @@ public class HttpUtil {
|
||||
}
|
||||
SSLContext theContext = SSLContexts.custom()
|
||||
.useProtocol("TLS")
|
||||
.loadTrustMaterial(file, password == null ? null : password.toCharArray())
|
||||
.loadTrustMaterial(file, password == null ? null : password.toCharArray(), TrustSelfSignedStrategy.INSTANCE)
|
||||
.build();
|
||||
sslsf = new SSLConnectionSocketFactory(theContext);
|
||||
}
|
||||
|
||||
public static void setSkipCertificateValidation() {
|
||||
if (!tlsWarningEmitted.getAndSet(true)) {
|
||||
// Since this is a static util, it may happen that TLS is setup many times in one command
|
||||
// invocation (e.g. when a command requires logging in). However, we would like to
|
||||
// prevent this warning from appearing multiple times. That's why we need to guard it with a boolean.
|
||||
System.err.println("The server is configured to use TLS but there is no truststore specified.");
|
||||
System.err.println("The tool will skip certificate validation. This is highly discouraged for production use cases");
|
||||
}
|
||||
|
||||
SSLContextBuilder builder = new SSLContextBuilder();
|
||||
try {
|
||||
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
|
||||
sslsf = new SSLConnectionSocketFactory(builder.build());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed setting up TLS", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user