Краткая версия : у меня есть приложение Java Spring, размещенное на Tomcat, и я пытаюсь получить доступ к локальной веб-службе OData, которая использует аутентификацию Kerberos / NTLM.Приложение вызывает веб-сервис автоматически по расписанию.Таким образом, у меня нет авторизованного пользователя.
Мое исследование до сих пор заставило меня поверить, что Waffle API может быть ответом.Однако я не могу указать пользователя и пароль и успешно пройти аутентификацию.
Кому-нибудь еще удалось это сделать?
Более длинная версия : в моей тестовой лабораторииМне удалось успешно получить доступ к сервису с помощью шаблона отдыха Springs и добавить к нему NTCredentials следующим образом:
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new NTCredentials(user, pass, null, domain));
CloseableHttpClient httpclient = HttpClientBuilder
.create()
.setDefaultCredentialsProvider(credsProvider)
.build();
RestTemplate restTemplate = new RestTemplate();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpclient);
restTemplate.setRequestFactory(requestFactory);
getUrl = "http://"+ host +":"+ port + getUrl;
ResponseEntity<String> response1 = restTemplate.exchange(getUrl, HttpMethod.GET, null, String.class);
Однако это не работает в домене клиентов.Разница, по-видимому, заключается в том, что в домене клиентов служба возвращает атрибут WWW-Authenticate «Согласовать», а не «NTLM».Кажется, это подразумевает, что он пытается использовать kerberos.
Исходя из этого, я написал отдельное приложение, использующее Spring Boot и Waffle.Это может успешно вызвать службу в домене клиентов с помощью билета Kerberos для вошедшего в систему пользователя (который запустил приложение).В моем размещенном в tomcat приложении нет авторизованного пользователя.Поэтому мне нужно заставить приложение использовать конкретного пользователя.Затем я безуспешно пытался использовать методы IWindowsAuthProvider.logonUser и IWindowsAuthProvider.impersonate.
Любая помощь с этим будет принята с благодарностью