2015-04-02 104 views
0

在我的應用程序中,我有以下方法將AD用戶名傳遞給它(例如:Domain1 \ User1),並嘗試在Active Directory中查找用戶所屬的組。處理Active Directory身份驗證的多個域

 public ActionResult Login(string userName) 
    { 
     PrincipalContext up = new PrincipalContext(ContextType.Domain); 

     UserPrincipal users = UserPrincipal.FindByIdentity(up,IdentityType.SamAccountName, userName); 

     PrincipalSearchResult<Principal> groups = users.GetGroups(); 
     IEnumerable<string> userGroupList = groups.Select(p =>p.SamAccountName); 
     return userGroupList ; 
    } 

該代碼完美的工作,但我猜這個代碼將失敗工作在有多個域的環境中。 例如: 1)用戶嘗試(域1 \用戶1)登錄,它會通過, 2)用戶嘗試(域2 \用戶2)應用程序將嘗試尋找用戶2登錄在Domain1,並且因爲Domain1中沒有這樣的用戶,它將會失敗。

這是真的嗎?如果是的話,我該如何解決這個問題,以便它可以與多個域一起使用?

回答

0

當我嘗試實例化新的PrincipalContext對象時,我需要傳遞域名作爲第二個參數。 通過這樣做,我能夠檢索具有多個域的用戶組。 所以代碼將是這樣的:

 PrincipalContext up = new PrincipalContext(ContextType.Domain,"DomainName");