2013-12-09 5 views
1

У меня есть приложение (MVC4) с проверкой подлинности Windows с Active Directory. После входа пользователя в систему (через диалоговое окно входа в браузер) он получает страницу со своими данными, где он может ее обновить, например, адрес emial.Доступ запрещен при обновлении объекта Active Directory

После того, как пользователь нажимает кнопку «Сохранить», он получает ошибку «Доступ лишен», но у него есть соответствующие привилегии в Active Directory.

Я сохранить пользовательские данные с кодом, как это:

using (DirectoryEntry de = new DirectoryEntry (path)) 
{ 
    SetEntityPropertyValue(de, "mail", user.Email); 
    de.CommitChanges(); 
} 

Но, если я прохожу пользователя и пароль этого пользователь вошедший, как это:

using (DirectoryEntry de = new DirectoryEntry (path, user, password)) 
{ 
    SetEntityPropertyValue(de, "mail", user.Email); 
    de.CommitChanges(); 
} 

это работает. Что не так? Как получить учетные данные пользователя из проверки подлинности Windows для передачи их методу DirectoryEntry(), если это не произошло автоматически?

Я не писал ранее, но IIS и AD работают на разных машинах.

+0

xiyal, вы когда-нибудь находили ответ? Я борюсь с той же проблемой. –

ответ

0

Я думаю, что вы аутентифицировали Active Directory изначально с использованием идентификатора пула приложений IIS, который не имеет достаточных разрешений для записи в Active Directory, но ему достаточно, чтобы читать элементы из AD. Вместо этого, я думаю, вы ищете impersonation, что заставит приложение работать как пользователь Windows с проверкой подлинности.

Попробуйте добавить это в свой web.config.

<configuration> 
    <system.web> 
    <identity impersonate="true"/> 
    </system.web> 
</configuration> 

Конечно, это потребует олицетворение пользователя Windows, чтобы иметь права на запись в Active Directory, а также.

+0

Спасибо за ваш ответ! Но я пробовал установить олицетворение ранее без успеха. IIS и AD работают на разных компьютерах, и когда я использую олицетворяюще, то я не могу аутентифицироваться - диалоговое окно входа в систему отображается снова и снова:/ – xiyal

+0

Бут находится в том же домене. – xiyal

+0

@xiyal Ах, неужели вы падаете жертвой проблемы с двойным прыжком. Чтобы решить проблему, вам, вероятно, понадобится задействовать администратор Active Directory. http://blogs.technet.com/b/askds/archive/2008/06/13/understanding-kerberos-double-hop.aspx и/или http://blogs.technet.com/b/taraj/archive/ 2009/01/29/контрольный список-для-двойных хмель вопросов-МИС-и-SQL-server.aspx –

Смежные вопросы