System.DirectoryServices.AccountManagement自我引导

时间:2011-04-07 20:46:52

标签: c# active-directory directoryservices

我正试图在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的前面,但后来无法连接。我很难过。

谢谢,

卡尔 -

1 个答案:

答案 0 :(得分:0)

尝试简化PrincipalContext行:

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

这假设您的域名是XXXXXXX.org。您也可以尝试将您的域名放在用户名前:“XXXXXX.org \ username”。