У меня есть рабочее приложение для управления HDFS с помощью WebHDFS. Мне нужно иметь возможность сделать это в защищенном кластере Kerberos.
Проблема в том, что нет библиотеки или расширения для согласования билета для моего приложения, у меня есть только базовый HTTP-клиент.
Можно ли создать службу Java, которая будет обрабатывать обмен билетами и, как только он получит билет службы, просто передать его приложению для использования в HTTP-запросе? Другими словами, мое приложение попросит службу Java согласовать билеты, и оно вернет билет службы обратно в мое приложение в виде строки или необработанной строки, и приложение просто прикрепит его к HTTP-запросу?
РЕДАКТИРОВАТЬ: есть ли подобное элегантное решение, подобное @SamsonScharfrichter, описанному для HTTPfs? (Насколько мне известно, он не поддерживает токены делегирования)
EDIT2: Привет, ребята, я все еще полностью потерян. Я безуспешно пытаюсь разобраться с клиентом Hadoop-auth. Не могли бы вы помочь мне снова? Я уже часами безуспешно читал об этом. Примеры говорят сделать это:
* // establishing an initial connection
*
* URL url = new URL("http://foo:8080/bar");
* AuthenticatedURL.Token token = new AuthenticatedURL.Token();
* AuthenticatedURL aUrl = new AuthenticatedURL();
* HttpURLConnection conn = new AuthenticatedURL(url, token).openConnection();
* ....
* // use the 'conn' instance
* ....
Я уже потерялся здесь. Какое начальное подключение мне нужно? Как может
new AuthenticatedURL(url, token).openConnection();
принять два параметра? для такого случая нет конструктора. (я получаю ошибку из-за этого). Разве не должен быть где-то указан принципал? Вероятно, это будет не так просто.
URL url = new URL("http://<host>:14000/webhdfs/v1/?op=liststatus");
AuthenticatedURL.Token token = new AuthenticatedURL.Token();
HttpURLConnection conn = new AuthenticatedURL(url, token).openConnection(url, token);