2017-10-18 113 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,但是您无法在上下文之外找到结果。