Единый вход с Java + Exchange 2007 EWS - PullRequest
2 голосов
/ 21 июля 2010

Я работал над проектом, который использует SPNEGO для единого входа для веб-приложения на основе Java. В настоящее время он успешно работает с Jetty + SPNEGO и Active Directory, поэтому, если вы посетите мою тестовую страницу, он может вывести auth_user, а также токен согласования, если браузер настроен правильно.

Следующим шагом проекта будет возможность передать этого пользователя и токен веб-службам Exchange в качестве аутентификации, чтобы я мог получить доступ к каталогу обмена удаленными пользователями (почта, контакты и т. Д.)

Я запустил JAX-WS для генерации заглушек из файла Services.wsdl и смог подключиться к Exchange с помощью этих классов. Единственная проблема заключается в том, что он будет аутентифицировать только пользователя, который запускает веб-сервер, а не удаленного пользователя.

Я также заметил, что не могу найти правильный класс для передачи токена, а не имя пользователя и пароль в EWS. Кроме того, сгенерированные файлы не имеют никаких ссылок на SPNEGO.

Кто-нибудь знает о возможном решении, или, похоже, мне придется генерировать вызовы SOAP вручную, а не использовать сгенерированные классы?

Спасибо за ваше время

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Я думаю, что лучший способ аутентификации на EWS - это использование пользователя, на котором запущен веб-сервер. Это ваша « учетная запись службы » для веб-служб Exchange. Для этой учетной записи требуется привилегия «Олицетворение веб-служб Exchange» (ms-Exch-EPI-Impersonation).

Если вы хотите получить доступ к обмену данными удаленных пользователей, вы должны использовать «обмен олицетворением» в своих вызовах. Для отдельного пользователя сервера обмена (« Действовать как учетная запись ») вы должны разрешить служебной учетной записи, которую он может имитировать, настроив привилегию «Разрешить олицетворение для личной информации Exchange» (ms-Exch-EPI-May-Impersonate).

Итак, каждый звонок аутентифицируется с использованием одной и той же учетной записи службы, но затем вы действуете как конкретный пользователь / почтовый ящик, используя в своих звонках олицетворение обмена.

Единая регистрация в вашем веб-приложении используется для определения текущей учетной записи «Действовать как», которая используется для олицетворения при обмене. Вам нужен адрес электронной почты пользователя или SID для этого.

0 голосов
/ 13 августа 2010

Нам удалось запустить и запустить решение, используя библиотеку Apache HTTP Client 4.1 alpha / Samba JCIFS и генерируя SOAP-запросы. Это позволяет нам войти в систему нескольких пользователей без какой-либо настройки, необходимой для их учетной записи обмена.

Мы использовали HttpClient 3.1, но столкнулись с проблемами из-за изменения протокола NTLM в более новых версиях Windows, поэтому мы обновились до последней версии.

...