2017-10-18 4 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"); 

ここでwierdパートはDomainAであり、有効なパスワードValidateCredentialsを持つUserBはtrueを返します。後で

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

FindByIdentityメソッドがnullを返します。

時間のあるドメインでのみ検証する方法はありますか?

答えて

0

ドメイン間の資格情報を検証できるのは、指定されたドメインがユーザーのドメインにクエリを転送しますが、ユーザーが含まれていないドメインからプリンシパル情報を読み込むことができないためです。

PrincipalContextは、FindByIdentityが検索する境界を定義します。これは、ドメイン全体、つまりドメイン内の特定のOUですが、コンテキスト外では結果を見つけることはできません。

関連する問題