Java websocket клиент со спнего - PullRequest
1 голос
/ 15 октября 2019

Мне нужно подключиться к службе веб-сокетов, которая использует аутентификацию spnego из автономного процесса Java.

Может ли кто-нибудь предоставить пример Java или указать мне библиотеку, которая имеет эту функцию, пожалуйста?

Я могу запросить остальные API на том же сервере, используя SpnegoHttpURLConnection - так работает часть spnego kerberos.
Я также могу подключиться к веб-сокету, если отключу аутентификацию на сервере.

Однако у SpengoHttpURLConnection нет простого способа обновить подключение к веб-сокету, и я не могу найти клиентскую библиотеку веб-сокетов, которая позволяет мне настроить аутентификацию spnego.

1 Ответ

1 голос
/ 16 октября 2019

Вы можете сгенерировать токен SPNEGO, используя Kerb4J и добавить его в заголовки, используя ClientEndpointConfig.Configurator.beforeRequest (Карта> заголовки) метод.

Если ваш веб-сокетработает на wss://ws.server.com, и вы проходите аутентификацию, используя svc_consumer учетную запись и /opt/myapp/consumer.keytab keytab код будет выглядеть так:

SpnegoClient spnegoClient = SpnegoClient.loginWithKeyTab("svc_consumer", "/opt/myapp/consumer.keytab");

@Override
public void beforeRequest(Map<String,List<String>> headers) {
    SpnegoContext context = spnegoClient.createContext("https://ws.server.com");
    headers.put("Authorization", Collections.singletonList(context.createTokenAsAuthroizationHeader()));
}

Отказ от ответственности: я являюсь автором Kerb4J

...