use of org.apache.storm.security.auth.sasl.SimpleSaslClientCallbackHandler in project storm by apache.
the class DigestSaslTransportPlugin method connect.
@Override
public TTransport connect(TTransport transport, String serverHost, String asUser) throws TTransportException, IOException {
CallbackHandler clientCallbackHandler;
WorkerToken token = WorkerTokenClientCallbackHandler.findWorkerTokenInSubject(type);
if (token != null) {
clientCallbackHandler = new WorkerTokenClientCallbackHandler(token);
} else {
Configuration loginConf = ClientAuthUtils.getConfiguration(conf);
if (loginConf == null) {
throw new IOException("Could not find any way to authenticate with the server.");
}
AppConfigurationEntry[] configurationEntries = loginConf.getAppConfigurationEntry(ClientAuthUtils.LOGIN_CONTEXT_CLIENT);
if (configurationEntries == null) {
String errorMessage = "Could not find a '" + ClientAuthUtils.LOGIN_CONTEXT_CLIENT + "' entry in this configuration: Client cannot start.";
throw new IOException(errorMessage);
}
String username = "";
String password = "";
for (AppConfigurationEntry entry : configurationEntries) {
Map options = entry.getOptions();
username = (String) options.getOrDefault("username", username);
password = (String) options.getOrDefault("password", password);
}
clientCallbackHandler = new SimpleSaslClientCallbackHandler(username, password);
}
TSaslClientTransport wrapperTransport = new TSaslClientTransport(DIGEST, null, ClientAuthUtils.SERVICE, serverHost, null, clientCallbackHandler, transport);
wrapperTransport.open();
LOG.debug("SASL DIGEST-MD5 client transport has been established");
return wrapperTransport;
}
Aggregations