2016-01-24 29 views
0

我正在使用下面的代码创建一个新的活动目录用户。该帐户已成功创建,但是当我尝试登录到我的域时,我收到消息“确保您输入了您的工作或学校帐户的密码”。我确保密码输入正确,并且帐户在活动目录中处于启用和解锁状态。第一次设置Active Directory用户帐户

 DirectoryEntry entry = new DirectoryEntry(createLdapPath); 
     try 
     { 

      DirectoryEntry newUser = entry.Children.Add("CN = " + userName, "USER"); 
      newUser.Properties["targetAddress"].Value = "SMTP:" + userName + "@mydomain.onmicrosoft.com"; 
      newUser.Properties["extensionAttribute15"].Value = "EDU"; 
      newUser.Properties["proxyAddresses"].Add("SMTP:" + userName + "@mydomain1.edu"); 
      newUser.Properties["proxyAddresses"].Add("smtp:" + userName + "@mydomain.onmicrosoft.com"); 
      newUser.Properties["proxyAddresses"].Add("smtp:" + userName + "@mydomain2.mail.onmicrosoft.com"); 
      newUser.Properties["givenName"].Value = fname; 
      newUser.Properties["sn"].Value = lname; 
      newUser.Properties["displayName"].Value = fname + " " + lname; 
      newUser.Properties["mail"].Value = fname.ToLower() + "." + lname.ToLower() + "@mydomain.edu"; 
      newUser.Properties["sAMAccountName"].Value = fname.ToLower() + "." + lname.ToLower(); 
      newUser.Properties["userPrincipalName"].Insert(0, fname.ToLower() + "." + lname.ToLower() + "@mydomain.edu"); 

      newUser.CommitChanges(); 

      newUser.Invoke("SetPassword", new object[] { "myStrongPassword" }); 
      newUser.CommitChanges(); 

      newUser.Close(); 

      string strUserName = userName; 
      DirectoryEntry usr = entry; 
      DirectorySearcher searcher = new DirectorySearcher(usr); 
      searcher.Filter = "(SAMAccountName=" + strUserName + ")"; 
      searcher.CacheResults = false; 
      SearchResult result = searcher.FindOne(); 
      usr = result.GetDirectoryEntry(); 
      usr.Properties["LockOutTime"].Value = 0; 

      int old_UAC = (int)usr.Properties["userAccountControl"][0]; 

      // AD user account disable flag 
      int ADS_UF_ACCOUNTDISABLE = 2; 

      // To enable an ad user account, we need to clear the disable bit/flag: 
      usr.Properties["userAccountControl"][0] = (old_UAC & ~ADS_UF_ACCOUNTDISABLE); 
      usr.CommitChanges(); 

      usr.Close(); 
      entry.Close(); 


     } 
     catch (Exception ex) 
{} 

当我打开“Active Directory用户和计算机”,然后导航到我的新创建的帐户,我只能登录 - >右键 - >重置密码。然后再次输入密码,并检查“解锁用户”。这种方式,当我尝试再次登录它工作正常。

我可能在我的代码中丢失或误认了什么?

回答

1

您不应该关闭'newUser'对象并重新绑定。这里是我的代码,在我们的生产环境中运行:

//Create user 
newUser.CommitChanges(); 

newUser.Invoke("SetPassword", password); 
newUser.Properties["userAccountControl"].Value = 512; 
newUser.CommitChanges(); 
newUser.Close(); 

这也有可能是“(old_UAC &〜ADS_UF_ACCOUNTDISABLE)”不变成是512(ADS_UF_NORMAL_ACCOUNT)。

+0

谢谢你的回答,在我的情况下,事实证明,活动目录还没有与办公室365同步。 – user3340627

1

事实证明Active Directory同步尚未与Office 365一起运行,这就是为什么我无法使用用户帐户登录。我可以通过运行任务计划程序Active Directory同步任务手动进行同步。

+0

很高兴你明白了。 –

相关问题