私はそれを正しく理解していないか、または何かが欠けているか、おそらく私が正しくやっているので、他の人々がこれをコードする方法に興味があります!LDAPによる認証
まず、LDAPのActive Directoryインスタンスではなく、構文上の違い以外にはあまり重要でないOpenDSインスタンスです。私は私のSystem.DirectoryServices.DirectoryEntryを作成するときに、私は、完全修飾ユーザー名を渡す必要があるだろう「rootuser」として認証するために
-dc=somedomain,dc=com
-uid=rootuser
-ou=Group1
-uid=username1
-uid=username2
-ou=Group2
-uid=username3
-uid=username4
:だから私は、ツリー構造のセットアップにこのような何かを持っている
を想定この場合、オブジェクト、:
はuid = rootuser、DC = somedomain、dc = comの
が、ツリー内の他のユーザーのために私は、LDAPパスがそれらを持っているユーザ名に追加するかを事前に知っている必要がありますスルーします。したがって、たとえば、これは失敗します。
はuid = USERNAME1、DC = somedomain、dc = comの
が、これは動作します:
はuid = USERNAME1、DC = somedomain、dc = comの、OU =グループ1を
私の質問は、ログイン時にユーザーがそのパスを構築するためにどのような特定のグループに属しているかわからないときに、これをどのように処理するのですか?私はそれを行うことができる唯一の方法は、 'rootuser'として最初の呼び出しを行うために私はツリー全体にアクセスして、その特定のユーザー(すなわちusername1)のためにそれをスキャンするSystem.DirectoryServices.DirectorySearcherを使用することです
using (DirectorySearcher searcher = GetDirectorySearcher()) {
searcher.Filter = "(&(objectClass=person)(uid=" + userName+ "))";
SearchResult result = searcher.FindOne();
return result.GetDirectoryEntry().Path;
}
その時点で
私はログインしたいユーザーのパスを持っており、実際の認証を進めることができます。私はここにベースオフか、これは一般的にどのように行われていますか?
ありがとうございました!
System.DirectoryServicesは.NETフレームワークの一部です。申し訳ありませんが、それがはっきりしていない場合。あなたが言ったことに基づいて正しくやっているようです。そして、はい、uidはこのオブジェクトのユニークな識別子です。ありがとう – snappymcsnap