通过PrincipalContext跨域登录
问题描述:
我有一个奇怪的问题。我想检查用户和密码有效的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。
如何仅在一个域中验证时间?
答
您可以验证跨域凭据,因为指定的域将查询转发到用户的域,但不能从不包含用户的域加载主体信息。
PrincipalContext
定义了FindByIdentity
将搜索的边界。这可以是一个完整的域,一个域内的特定OU,但是您无法在上下文之外找到结果。