このコードを使用して、ADAMインスタンスをクエリします。
DirectoryEntry adRoot = new DirectoryEntry(ConfigurationManager.AppSettings["LdapConnectionString"].ToString());
DirectorySearcher adSearch = new DirectorySearcher(adRoot);
adSearch.Filter = "(&(objectClass=user)(objectCategory=person))";
SearchResultCollection searchResults = adSearch.FindAll();
return searchResults;
これはApp.configのタグにあります:
add key = "LdapConnectionString" value = "LDAP://servername:portnumber/ dc =ドメイン名 "
このコードを使用して、ADAMインスタンスから取得するすべてのプロパティ名を出力します。
DirectoryEntry entry = searchResults[0].GetDirectoryEntry();
foreach (string property in entry.Properties.PropertyNames)
{
Console.WriteLine(property);
}
PropertiesToLoadは空のStringCollectionであり、PropertyNamesOnlyはfalseです。
私たちは、proxyAddresses、street、zipCode、およびプログラムに必要な他の多くの属性を取得していません。
私は見つけました ここ それ:
属性のリストを指定しない場合、検索は、ディレクトリに設定されたアクセス制御によって許可されたすべての属性の値を返します。
それで、私の質問...このアクセス制御セットはどこにあり、それらの属性にアクセスできるようにどのように変更しますか?
ADSIEditを使用すると、問題が発生する可能性があるため、注意してください。 (http://technet.Microsoft.com/en-us/library/cc773354%28WS.10%29.aspx )
私はそんなに深く行く必要はありませんでした、それは少し埋もれています。 ADSIEditを開いて、確認したいオブジェクト(またはコンテナ/ OU全体)に移動し、右クリックして「プロパティ」に移動します。
[セキュリティ]タブをクリックし、[詳細]ボタンをクリックし、[編集]をクリックして、何ができるかを確認します(まだ変更を加えないでください)。 「フルコントロール」や「所有者の変更」などの標準の権限と、「このオブジェクトのみ」が適用される上記の権限が表示されます
あなたがいる場所に別のタブ「プロパティ」があります-すべてのグッズがあります。 「ビジネスロールの読み取り」や「プロキシアドレスの読み取り」などがあります。
新しいグループを追加し、そこにある好きなボックスにチェックマークを付けて、コンテナ全体またはOUに適用することができます。これで、準備は完了です。
これは実際には2つの機能です。
クエリが実行されるユーザーコンテキスト。
読み取られているオブジェクト上のACE。
あなたへの私の質問は、クエリが実行されているユーザーコンテキストの下にありますか?
私が間違っていなければ、認証されたユーザーはすべてのプロパティを読み取ることができるはずです。
さらに、ADSIEditだけでなく、Delegation ofControlウィザードを介してこれを容易にすることができるはずです。
http://support.Microsoft.com/kb/281146
これは、ActiveDirectoryユーザーとコンピューターおよびActiveDirectoryサイトとサービスなどのWindowsActiveDirectoryスナップインツールの[セキュリティ]タブに相当するコマンドラインです。
構文を学ぶのは楽しいですが、ADAMコマンドラインプロンプトを使用して、ADAMを使用したサンドボックス環境でのアクセスを正常に拒否することができました。
dsacls "\ localhost\OU =ouname、OU =ou2name、DC =domainname、DC =domainname2 "/ ddomain\group:GR
/ dはdomain\groupGR(汎用読み取り)を拒否します。これには、proxyAddresses、streetなどの多くのプロパティが含まれます。グループルートがGRのメンバーであることを許可するか、別のユーザーか何かにするように依頼する必要があります。いずれにせよ、私たちはそれを理解しました。