I haven’t been able to do this using the Apache Camel HTTP component yet, so I put together a Processor to do it for me instead. To make this work we need a krb5.conf and login.conf file with settings for our domain.
Example krb5.conf
[libdefaults] default_realm = MYDOMAIN.SE [realms] MYDOMAIN.SE = { kdc = kdc.mydomain.se }
Example Login.conf
com.sun.security.jgss.krb5.initiate { com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=false useTicketCache=true; };
Camel flow:
public class MyFlow extends RouteBuilder { @Override public void configure() throws Exception { from("timer:myTimer?repeatCount=1") .process(new CustomHTTPClient()) .log("${body}"); } // Create a custom Authenticator static class MyAuthenticator extends Authenticator { public PasswordAuthentication getPasswordAuthentication() { return (new PasswordAuthentication("username", "password".toCharArray())); } } // Camel Processor public static class CustomHTTPClient implements Processor { public void process(Exchange exchange) throws Exception { // Setup Kerberos authentication via Java VM options System.setProperty("java.security.krb5.conf", "/etc/krb5.conf"); System.setProperty("java.security.auth.login.config", "/etc/login.conf"); System.setProperty("javax.security.auth.useSubjectCredsOnly", "false"); System.setProperty("sun.security.krb5.debug", "true"); // Debug logging // Set a custom Authenticator Authenticator.setDefault(new MyAuthenticator()); // Custom "HTTPClient" URL url = new URL("https://resource.mydomain.se/data"); InputStream ins = url.openConnection().getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); String str = ""; for (String line; (line = reader.readLine()) != null; str += line); // Set payload as message back to flow exchange.getIn().setBody(str); } } }
Kamel run arguments:
kamel run MyFlow.java --resource file:krb5.conf@/etc/krb5.conf --resource file:login.conf@/etc/login.conf
Tested on Apache Camel K Runtime 1.16.0, Apache Camel 3.19.0, Minikube v1.29.0 and WSL2 Ubuntu 20.04.4 LTS