System.DirectoryServices.AccountManagement загружает себя - PullRequest
0 голосов
/ 08 апреля 2011

Я пытаюсь загрузить себя в пространство имен System.DirectoryServices.AccountManagement, чтобы решить другую проблему, с которой я столкнулся.В сети я хочу включить флаг «ChangePasswordOnNextLogon» в объявлении, и это пространство имен сделало его простым.

Поэтому я попытался использовать его с теми же пользователями и паролями, которые я использую для входа в систему с помощью AdMembershipProvider.

PrincipalContext oPrincipalContext = 
   new PrincipalContext(ContextType.Domain, "10.1.XXX.XXX", "DC=XXXXXXXX,DC=ORG",
                        ContextOptions.SimpleBind, AUserThatWorks, APasswordThatWorks);

UserPrincipal oUserPrincipal = 
    UserPrincipal.FindByIdentity(oPrincipalContext, AdUserName);

// we need to see if they can authenticate before changing password,so we have to turn this off manually. - EWB
oUserPrincipal.RefreshExpiredPassword();

bool b = oPrincipalContext.ValidateCredentials( AdUserName, AdPassword );

if (!b)
   oUserPrincipal.ExpirePasswordNow();

return b;

Но когда дело доходит до FindByIdentity, я получаю ошибку "неверный пользователь или пароль".

Поскольку пользователь работает в другом месте, я полагаю, что это должен быть один из других параметров дляполучить основной контекст.У кого-нибудь есть намеки для меня?Я попытался поместить LDAP вместо URL, но затем он не смог подключиться.Я в тупике.

Спасибо,

Cal-

1 Ответ

0 голосов
/ 08 апреля 2011

Попробуйте упростить вашу строку PrincipalContext:

PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, "XXXXXX.org", AUserThatWorks, PasswordThatWorks);

Предполагается, что ваш домен XXXXXXX.org. Вы также можете попробовать поставить свой домен перед вашим именем пользователя: "XXXXXX.org \ username".

...