[解決済み] ユーザーがグループのメンバーであるかどうかをテストするためのLDAPクエリを作成するには?
2022-06-23 02:37:38
質問
あるユーザー(sAMAccountName)が特定のグループのメンバーであるかどうかをテストするLDAPクエリを書きたいと思っています。私は0または1の結果レコードを得るようにそれを行うことは可能ですか?
私は、ユーザーのすべてのグループを取得し、一致するためにそれぞれをテストすることができると思いますが、私はそれを1つのLDAP式にパックすることができるかどうか疑問に思っていました。
何かアイデアはありますか?
ありがとうございます。
どのように解決するのですか?
ここで、このフィルターを使ったクエリを作成することができるはずです。
(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))
そして、これを LDAP サーバーに対して実行し、結果が得られたら、あなたのユーザー "yourUserName" は確かにグループ "CN=YourGroup,OU=Users,DC=YourDomain,DC=com のメンバーであることが分かります。
これがうまくいくかどうか試してみてください!
C# / VB.Net と System.DirectoryServices を使用している場合、このスニペットがトリックを行うはずです。
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;
srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberOf=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";
SearchResultCollection res = srch.FindAll();
if(res == null || res.Count <= 0) {
Console.WriteLine("This user is *NOT* member of that group");
} else {
Console.WriteLine("This user is INDEED a member of that group");
}
注意: これは直接的なグループ メンバーシップのみをテストし、ドメイン内で "プライマリ グループと呼ばれるもの (通常は "cn=Users") のメンバーシップはテストしません。例えば、ユーザー A がグループ A のメンバーで、グループ B のメンバーである場合、ユーザー A が実際にはグループ B のメンバーであるという事実は、ここでは反映されません。
マーク
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン