Получение объекта ICredentials для аутентифицированного пользователя веб-сайта ASP - PullRequest
3 голосов
/ 08 июня 2011

Я пытаюсь добавить функцию на существующий веб-сайт ASP.net, которая должна получать данные календаря пользователей из веб-службы Exchange. Я знаю, что это возможно, и у меня есть локальные тесты в качестве подтверждения концепции, но у меня есть некоторые проблемы при реализации этого в контексте веб-сайта ASP.

Мое намерение состоит в том, чтобы переопределить учетные данные по умолчанию, создав экземпляр класса WebCredentials с использованием текущего пользователя учетных данных сайтов ASP, а затем используя его для создания привязки службы Exchange.

Пример

ExchangeService service = new ExchangeService(ExchnageVersion.2007);
service.AutoDetect(emailAddress);
service.Credentials = new WebCredentials(credentials);

К сожалению, объект WebCredentials может быть создан только из набора строк, содержащих имя пользователя, пароль и домен, или путем передачи объекта ICredentials.

Итак, вопрос в том, существует ли на веб-сайте, прошедшем проверку подлинности с помощью форм, какой-либо способ получить объект ICredentials для текущего пользователя, прошедшего проверку подлинности?

1 Ответ

3 голосов
/ 27 августа 2011

При проверке подлинности без форм используется специальный зашифрованный cookie, который отправляется браузером при каждом запросе.Это даст ASP.NET знать, что пользователь аутентифицирован и кто он.Он не предназначен для работы с внешними системами, и фактически требует, чтобы машинный ключ на сервере мог расшифровать детали.Передача учетных данных форм на другой сервер была бы бессмысленной.

Эта система отличается от аутентификации Windows, которая может использовать различные схемы проверки подлинности, такие как базовая проверка подлинности, проверка подлинности NTLM и Kerberos, для согласования учетных данных в рамках протокола HTTP,и которые могут быть поняты внешними системами на том же Exchange.

Так что для использования ICredentials вам нужно либо использовать аутентификацию Windows в вашем приложении ASP.Net, либо иметь доступ к имени пользователя / паролю, чтобы вы могли использоватьNetworkCrententials явно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...