4

У меня есть приложение asp.net MVC, которое настроено на использование проверки подлинности Windows. Я пытаюсь получить группы из UserPrincipal, используя это.Группы AD для пользователей Windows

UserPrincipal.Current.GetGroups() 

Это нормально работает при работе с Visual Studio, но не удается при размещении в IIS. Пул приложений настроен для интегрированного конвейера и идентификатора сетевой службы. Выдает ниже ошибок:

Unable to cast object of type 'System.DirectoryServices.AccountManagement.GroupPrincipal' to type 'System.DirectoryServices.AccountManagement.UserPrincipal'."

Я попытался олицетворением кода

WindowsIdentity identity = (WindowsIdentity)HttpContext.Current.User.Identity; 

using (WindowsImpersonationContext wic = identity.Impersonate()) 
{ 
    PrincipalContext context = new PrincipalContext(ContextType.Domain, "DOMAIN NAME"); 
    UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "User Name"); 

} 

FindByIdentity бросает ошибку.

000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1

Как я могу получить текущие группы пользователей из AD?

+0

как вы решили эту проблему? – Bargitta

ответ

0

У меня возникла эта проблема, потому что у меня случайно были настроены типы проверки подлинности для сайта IIS. Я удалил «анонимную аутентификацию» и установил, что были включены только «аутентификация asp.net» и «проверка подлинности Windows», и ошибка исчезла.

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