2017-10-18 116 views
0

我有一個奇怪的問題。我想檢查用戶和密碼有效的2個域名與信任。通過PrincipalContext跨域登錄

List<string> definedDomains = new List<string>(); 
definedDomains.Add("DomainA"); 
definedDomains.Add("DomainB"); 

bool isValid = false; 

foreach (string domain in definedDomains) 
{ 
    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain)) 
    { 
     isValid = pc.ValidateCredentials("userB", "password"); 

這裏是奇怪的部分:在DomainA中,並且用戶B使用有效的密碼ValidateCredentials返回true。後來

PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, domain); 
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(yourDomain, "UserB"); 

FindByIdentity方法返回null。

如何僅在一個域中驗證時間?

回答

0

您可以驗證跨域憑據,因爲指定的域將查詢轉發到用戶的域,但不能從不包含用戶的域加載主體信息。

PrincipalContext定義了FindByIdentity將搜索的邊界。這可以是一個完整的域,一個域內的特定OU,但是您無法在上下文之外找到結果。