Asp.Net でユーザーの AD ユーザー グループを取得するにはどうすればよいですか?
-
01-07-2019 - |
質問
ユーザーが所属するグループのリストを取得できる必要がありますが、次のプロパティの 1 つ/一部/すべてを表示する必要があります。
- 識別名
- 名前
- CN
- サマックカウント名
私が現在持っているものは、ある種の名前を返しますが、上記の名前のどれも返しません(名前は似ているように見えますが、すべてが正しく一致するわけではありません。これが私が使用しているものです:
ArrayList groups = new ArrayList();
foreach (System.Security.Principal.IdentityReference group in System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups)
groups.Add(group.Translate(typeof(System.Security.Principal.NTAccount)));
先ほども述べたように、上記は機能しますが、プログラムに必要な適切な名前 (上で指定したもの) は取得できません。ドメイン内のすべてのグループを呼び出したときに取得したリストと一致させるには、これが必要です。
DirectoryEntry dirEnt = new DirectoryEntry("LDAP://my_domain_controller");
DirectorySearcher srch = new DirectorySearcher(dirEnt);
srch.Filter = "(objectClass=Group)";
var results = srch.FindAll();
解決
グループもプロパティを持つ個別の AD エントリであるため、これを 1 つのステップで行うことはできません。
したがって、最初の実行では、ユーザーが属しているグループ名を取得し、それらを何らかのリストに入力する必要があります。
2 番目のステップでは、すべてのグループ名を調べて 1 つずつクエリを実行して、グループ プロパティ (識別名など) を取得し、それを何らかの構造に収集します。
所属していません StackOverflow