2016-01-24 65 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

很高興你明白了。 –

相關問題