2012-03-08 2 views
2

私はC#アプリケーションを使用して、Windows 2008の64ビットサーバー上にあるActive Directoryユーザーの認証とチェックを行っています。LDAPユーザーが存在するかどうかを確認する方法/アクティブですか?

次のコードを使用して、ユーザー名とパスワードを入力するとき、私は成功し、ユーザーを認証することができました:私のdomainNameの値はrootforest.comで、自分のユーザー名は、私がしたい別の関数でadmin6

 UserPrincipal usr; 
     PrincipalContext ad; 

     //Enter Active Directory settings 
     ad = new PrincipalContext(ContextType.Domain, domainName,usrName,pswd); 

     //search user 
     usr = new UserPrincipal(ad); 
     usr.SamAccountName = usrName; 

     PrincipalSearcher search = new PrincipalSearcher(usr); 
     usr = (UserPrincipal)search.FindOne(); 
     search.Dispose(); 

ですユーザー 'admin6'が存在し、私はパスワードを持っていないかどうかをチェックしますが、チェックすると「ログオン失敗:unkoownユーザー名またはパスワードが間違っています。私が使用したコードは、この行を除いて上記とほぼ同一であった:

 //Enter Active Directory settings 
     ad = new PrincipalContext(ContextType.Domain, domainName); 

私はウェブ上で発見この作業ではない、私が試した他のコードを有するが、それらはすべて私に同じエラーを与えます。私はそれが私のActive Directoryドメインをどのように設定することができると思い始めましたか?

下の写真は私のドメインがどのように見えるかです:

https://picasaweb.google.com/100922945973553878191/ActiveDirectory?authuser=0&feat=directlink

誰もこれを私に助けることができますか?私はこの問題で最後の日か今のところ固執していましたが、なぜそれを見つけることができないのでしょうか。あなたがいくつかのコードを持っていれば、それは偉大だと試すことができます

答えて

1

ユーザが存在するかどうかをチェックするには、既知の識別名を使ってベースレベルの検索を実行する必要があります。検索の結果が成功し、検索結果の一部として返されるエントリの数が1より大きい場合、識別名はディレクトリデータベースに存在します。

これは、バインド要求によって行われる接続の認証状態を確立することとは異なります。バインド要求が成功すると、バインドで使用される識別名に従って接続の認証状態が設定されます。

恐らく、コマンドラインldapsearchツールを使用して識別名のステータスを確認する必要があります。これにより、識別名が存在することと、資格情報が正しいことと、ディレクトリ許可が達成しようとしていることを許可していることを確信することができます。識別名と資格情報が存在することを確認したら、コードのトラブルシューティングを続行できます。

+0

私はウィンドウマシン上にあるので、LDAPSoft AD管理ツールをダウンロードして接続を確認したところ、 'admin6'というアカウントの識別名はCN = admin6、CN = Users、DC = rootforest、DC = comです。私は(DirectoryEntry.Exists( "LDAP:// CN = admin6、CN = Users、DC = rootforest、DC = com)、またはif(DirectoryEntry.Exists(" LDAP:// DC = rootforest、DC = com))でもまだ運がない – Fylix