В настоящее время я работаю над авторизацией прокси-сервера API Qlik с использованием Java.Для этого мне нужно пройти через несколько перенаправлений, а затем открыть WebSocket.У меня есть версия C #, которая выполняет задачу, но мне нужно перенести ее на Java.
В Java я могу завершить перенаправления и получить ключ сеанса для WebSocket, но не могу правильно настроить учетные данные NTLM, чтобы WebSocket мог их принять.
В настоящее время я использую HTTP-клиент Apache v 4.5.И nv-websocket-клиент для WebSocket.
https://hc.apache.org/httpcomponents-client-4.5.x/index.html
https://github.com/TakahikoKawasaki/nv-websocket-client
В Java я создал объект учетных данных и установил учетные данные NTLM для запроса https.
Проблема в том, что в C # вызов WebSocket, кажется, автоматически принимает запрос.UseDefaultCredentials = true;.
Мой вопрос, есть ли способ получить такую же функциональность в Java?или библиотека, которая поддерживает функции.Или, если кто-то использовал Java для выполнения этой задачи, было бы замечательно.
Я попытался настроить заголовки для запроса WebSocket, чтобы отразить запрос NTLM, но я не совсем уверен, куда идти дальше.Ниже приведена настройка c #, которую я ищу, чтобы выполнить ту же задачу.
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(URI);
request.Headers = headers;
request.Method = "GET";
request.Accept = "application/json";
request.Credentials = true;
System.Net.CredentialCache.DefaultNetworkCredentials;
request.UseDefaultCredentials = true;
request.AllowAutoRedirect = false;
request.CookieContainer = new CookieContainer();
В настоящее время я получаю:
webSocketFrame (FIN = 1, RSV1 = 0, RSV2 = 0, RSV3 = 0, код операции = TEXT, длина = 226, полезная нагрузка= "
{" jsonrpc ":" 2.0 ",
" method ":" OnAuthenticationInformation ",
" params ": {" loginUri ": baseurl + port" / internal_windows_authentication /? TargetId =Идентификатор, возвращенный здесь ",
" mustAuthenticate ": true}}")
Ответ, который я ищу:
webSocketFrame (FIN = 1, RSV1= 0, RSV2 = 0, RSV3 = 0, код операции = TEXT, длина = 226, полезная нагрузка = "{" jsonrpc ":" 2.0 ",
" method ":" OnAuthenticationInformation ",
" params ": {"loginUri": baseurl + port "/ internal_windows_authentication /? targetId = ID, возвращаемый здесь",
"mustAuthenticate": false}} ") <---- логический флаг изменен </p>