Вход в HTTPClient из keytab для доступа к сервису истории заданий Hadoop

Я пишу Java-программу для доступа к службе истории заданий Hadoop для получения некоторой информации.

Я использую HTTPClient для вызова HttpGet. Мне нужно войти в систему из файла keytab (у меня есть файл в моей папке ~/.ssh/), а не вводить имя пользователя и пароль.

Мой вопрос: как войти с keytab в HTTPClient?

Вот как я настроил свой HTTPClient

System.setProperty("java.security.krb5.conf", "krb5.conf");
System.setProperty("sun.security.krb5.debug", "true");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");

System.setProperty("java.security.krb5.realm", prop.getProperty("krb5.realm"));
System.setProperty("java.security.krb5.kdc", prop.getProperty("krb5.kdc"));

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(200);
cm.setDefaultMaxPerRoute(100);

//TODO login from keytab ?
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("DUMMY", null));

Lookup<AuthSchemeProvider> authRegistry = RegistryBuilder.<AuthSchemeProvider>create()
  .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory())
  .build();

httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider)
  .setDefaultAuthSchemeRegistry(authRegistry)
  .setConnectionManager(cm)
  .build();
HttpResponse response = httpClient.execute(request);

Интересно, что этот код может успешно работать в моем IntelliJ. Но после того, как я создам и запущу его из командной строки, он покажет информацию, чтобы запросить у меня имя пользователя и пароль.

Я новичок в аутентификации, надеюсь, кто-нибудь может помочь. Большое спасибо.


person transcendence    schedule 20.09.2015    source источник
comment
Взгляните на stackoverflow.com/questions/21375372/ — в этом случае HTTP не задействован, но конфигурация GSSAPI для получения билета Kerberos такая же. И этот флаг трассировки может оказаться полезным: " title="подключиться к кусту в защищенном кластере с проверкой подлинности Kerberos с помощью keytab"> stackoverflow.com/questions/31824149/   -  person Samson Scharfrichter    schedule 21.09.2015


Ответы (1)


person    schedule
comment
добавление некоторых деталей может быть приятно для других. - person Sachin; 26.04.2016
comment
Какие детали вы имеете в виду? - person scythiang; 28.04.2016
comment
это просто куча кода, добавьте несколько причин/комментариев для вашего кода. - person Sachin; 29.04.2016