Работа с кодом PrincipalContext
в коде службы WCF. Служба WCF является олицетворением, чтобы разрешить аутентификацию типа «сквозной».
В то время как все остальное, что я делаю с Active Directory (в основном пространство имен System.DirectoryServices.Protocols
), работает нормально в этом сценарии, по некоторым причинам классы в System.DirectoryServices.AccountManagement подходят. Пример кода, который не работает:
PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName);
UserPrincipal user =
UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName);
Когда я звоню на FindByIdentity
, я получаю COMException: «Произошла ошибка операции». Звонки на номер PrincipalContext
также не выполняются, например ::
string server = context.ConnectedServer;
И OperationContext.Current.ServiceSecurityContext
, и Thread.CurrentPrincipal.Identity
показывают, что олицетворение работает правильно. И, как я уже сказал, другие задачи AD в S.DS.P работают нормально.
Если я явно установлю учетные данные на PrincipalContext
, все будет работать. Например:
PrincipalContext context =
new PrincipalContext(ContextType.Domain, domainName, user, password);
UserPrincipal user =
UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName);
Теперь все работает. Но я не буду знать имя пользователя и пароль от звонящего; Я должен положиться на подражание.
Есть идеи, что может вызвать проблему, с которой я столкнулся?
Заранее спасибо!
Джеймс