Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > ntlm authentication cookies


Автор: vthm3 1.9.2015, 10:17
Работаю с  httpClient and NTLM authentication.

Нужно из java app залогинится на sharepoint сервере, так чтобы пользователь не видел окно авторизации.. делаю это с помощью NTLM.

Код

DefaultHttpClient httpClient = new DefaultHttpClient(cm,params);
httpClient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
httpClient.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY),
new NTCredentials("login", "pass", null, "server.net"));
HttpGet httpget = new HttpGet("htts://sharepoint.server.com/");
HttpResponse response;
try {
     response = httpClient.execute(httpget);
     StatusLine entity = response.getStatusLine();
     System.out.println("executing request " + httpget.getRequestLine());
     System.out.println(entity.toString());
     System.out.println("");

Header[] headers = response.getAllHeaders();
for (Header header : headers) {
      System.out.println(header.getName() + " : " + header.getValue());
}



Он возвращает мне статус
Код

executing request GET https://sharepoint.server.com/
HTTP/1.1 200 OK


Все то что нужно... 

Как мне запомнить полученные cookies, чтобы при следующих вызовах данных из sharepoint сервера, он знал что этот пользователь уже авторизирован (и не возвращал окно авторизации)??


Или как пересылать эти куки в iframes браузера (чтобы опять сервер знал что юзер уже авторизирован)??
Код

internalBrowserEmbedded.setSource(new ExternalResource(("https://sharepoint.server.com/")));


Автор: LSD 1.9.2015, 15:54
Цитата(vthm3 @  1.9.2015,  11:17 Найти цитируемый пост)
Как мне установить полученные cookies в браузер

Какой браузер?

Автор: vthm3 1.9.2015, 16:03
ну не в браузер.. а как запомнить куки?

чтобы потом их можно было использовать при вызове других ссылок из сервера? не получая каждый раз окно авторизации

Автор: AntonSaburov 1.9.2015, 17:29
Может поможет это - http://stackoverflow.com/questions/8733758/how-can-i-get-the-cookies-from-httpclient

Автор: Samotnik 1.9.2015, 20:31
Цитата(vthm3 @  1.9.2015,  10:17 Найти цитируемый пост)
Как мне запомнить полученные cookies, чтобы при следующих вызовах данных из sharepoint сервера, он знал что этот пользователь уже авторизирован (и не возвращал окно авторизации)??

Так а в чем проблема? Есть объект response, развлекайся, вытягивай весь header, всё что нашёл - всё твоё.

Автор: vthm3 2.9.2015, 09:55
Цитата(Samotnik @ 1.9.2015,  20:31)
Цитата(vthm3 @  1.9.2015,  10:17 Найти цитируемый пост)
Как мне запомнить полученные cookies, чтобы при следующих вызовах данных из sharepoint сервера, он знал что этот пользователь уже авторизирован (и не возвращал окно авторизации)??

Так а в чем проблема? Есть объект response, развлекайся, вытягивай весь header, всё что нашёл - всё твоё.

а как этот header передать в iframe? 

Автор: Samotnik 2.9.2015, 11:00
vthm3, это зависит от того, как ты iframe вызываешь. Просто возьми в этот request подсунь эти куки. Или если у тебя новый запрос через HTTPClient - тоже не проблема, установи в header свои куки. Покажи как ты работаешь c iframe

Автор: LSD 2.9.2015, 11:23
http://hc.apache.org/httpclient-3.x/cookies.html

А вообще, объясни по нормальному что и как ты делаешь. А то пока не объяснение, а облако тегов: iframe, HttpCielnt, Cookie.

Автор: vthm3 8.9.2015, 10:18
Цитата(Samotnik @ 2.9.2015,  11:00)
vthm3, это зависит от того, как ты iframe вызываешь. Просто возьми в этот request подсунь эти куки. Или если у тебя новый запрос через HTTPClient - тоже не проблема, установи в header свои куки. Покажи как ты работаешь c iframe

а я работаю с vaadin...

и в этом случае получается такое:

Код

private Embedded internalBrowserEmbedded;
internalBrowserEmbedded.setSource(new ExternalResource(formURL));



как сюда подсунуть куки?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)