Ошибка с методом UserPrincipal.GetAuthorizationGroups ()
У меня возникла проблема с использованием метода GetAuthorizationGroups класса UserPrincipal в веб-приложении.
Используя следующий код, я получаю "При попытке получить группы авторизации произошла ошибка (5)"
PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM", "username", "password");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();
Я считаю, что этот код работает до определенной степени.
Когда я просматриваю объект контекста, я вижу, что сервер и имя пользователя / пароль были правильно разрешены в объектеКогда я просматриваю объект p, я вижу, что данные AD были заполнены, как номер телефона и т. Д.Вот трассировка стека от ошибки.
[PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317279
System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11
Удаление имени пользователя и пароля из конструктора PrincipalContext и изменение пула приложений (в iis7) для запуска под тем же пользователем ([email protected]) - работает следующий код.
PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();
Мне нужно, чтобы код в первом примере работал - я не хочу запускать пул приложений от имени пользователя домена, чтобы этот код работал.