2005年08月20日

ADのユーザ名から所属するグループの一覧を取得する

GDNJでVB.NETでActiveDirectoryのユーザ名から属しているグループ名を取得したい


なんてのがあったのでそのときの回答から内容をまとめてみます。

使用するアセンブリ:System.DirectoryServices.dll
使用するクラス:DirectoryEntry, DirectorySearcher, SearchResult

手順:1.DirectryEntryクラスを使用して、ADに接続する
   2.ADに接続できていることを確認する
   3.DirectorySearcherクラスを使用してLDAP内を検索する
   4.検索結果から所属グループ一覧を取得する

0.プロジェクトにSystem.DirectoryServices.dllの参照を追加します。

1.DirectoryEntryクラスを使用して、ADに接続します。
  文字列として、サーバーパス、ログインユーザー名、パスワードを用意します。
  サーバーパスの指定にはいろいろな方法がありますのでこの辺を参照してください。
  ユーザー名はUser DNの形で指定する必要があります。例えばAdministratorの場合は
   CN=Administrator,CN=Users,DC=domain,DC=com
  といった形。

string serverPath = "LDAP:///DC=domain,DC=local";
string username = "CN=Administrator,CN=Users,DC=domain,DC=com";
string password = "hogehoge";
DirectoryEntry entry = new DirectoryEntry(serverPath, username, password);

2.ADに接続できていることを確認する
  ADに接続できているか(=ログインできたか)を確認するためのプロパティがありません。
  ここでは、NaviteObjectプロパティが取得できるかどうかで代用します。
  [HOWTO] フォーム認証と Visual C# .NET を使用して Active Directory に対する認証を行う方法

try
{
Object obj = entry.NaviteObject;
}
catch (Exception ex)
{
Throw
}

3.DirectorySearcherクラスを使用してLDAP内を検索する
  ActiveDirectoryもLDAPなのでLDAPのスキーマを使用して検索することができます。
  検索は
   クエリの構築
   検索の実行
  の手順で行います。

DirectorySearcher search = new DirectorySearcher();
// 検索のルートになるDirectoryEntryを指定します。
// ここよりも下のノードが再帰的に検索されます。
search.SearchRoot = entry;
// 検索条件を指定します。条件の指定はLDAPクエリの構築と一緒です。
search.Filter = "(samAccountName=libaty)"
// FindOneメソッドを使用して最初にヒットした1件を取得します。
SearchResult result = search.FindOne();

4.検索結果から所属グループ一覧を取得する
  検索結果のSearchResultのオブジェクトから結果に含まれるスキーマを取得し、
  ユーザが所属するグループの一覧を取得します。

StringCollection groupList = new StringCollection();
for (int counter = 0; counter < result.Properties["memberOf"].Count; counter++)
{
string groupName = (string) result.Properties["memberOf"][counter];
gropuList.Add(groupName);
}

※4.を実行しただけでは、ユーザが所属するPrimary Groupを取得することができません。
そこで4.に加えて以下のコードを実行します。

DirectorySearcher groupSearch = new DirectorySearcher();
groupSearch.SearchRoot = entry;
groupSearch.Filter = "(objectclass=group)";

foreach (SearchResult resultGroup in groupSearch.FindAll())
{
if (Object.Equals(result.Properties["primarygroupid"][0], resultGroup.Properties["primarygrouptoken"][0])
{
groupList.Add(resultGroup.Properties["distinguishedName"][0]);
}
}

これでgroupListにはユーザが所属するグループの一覧が格納されています。
posted by libaty at 22:18| 東京 ☀| Comment(60) | TrackBack(0) | .NET | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
平素は【http://www.sale-rmt.jp/gamebuy/RED%20STONE.htm】をご利用いただき、誠にありがとうございます。
Posted by デカロン rmt at 2011年07月12日 17:19
いつも【http://www.rmt-iroiro.jp/rmtbuy/Arad.htm】をご愛顧いただき、ありがとうございます!
Posted by Perfect World rmt at 2011年07月12日 23:15
こんにちはいつも【http://www.rmt-roan.jp/gamebuy/Latale.htm】ご愛顧本当にありがとうございます!
Posted by アラド rmt at 2011年07月13日 00:22
ただ今ナインテイルRMT取扱開始いたします!
Posted by アイオン rmt at 2011年07月13日 07:07
 RMT販売ページ:【http://www.rmt-top.com/
Posted by デカロン rmt at 2011年07月13日 07:34
皆さんのご来店を楽しみにしております【http://www.wired-rmt.jp/rmt/Atlantica.htm
Posted by アイオン rmt at 2011年07月13日 10:15
ご注文は24時間受付中、簡単な購入手続き!
Posted by ドラゴンネスト rmt at 2011年07月13日 11:16
通貨信用販売サービス【http://www.kiraku-rmt.jp/rmtbuy/Maplestory.htm
Posted by デカロン rmt at 2011年07月13日 12:19
http://yahoo-rmt.jp/yahoormt/REDSTONE.htm】は業内で最大で最安値綜合サイトです。会社の全員は一番サービスを提供していただきます。
Posted by aion rmt at 2011年07月13日 17:52
お世話になります、【http://www.wired-rmt.jp/rmt/CABAL.htm】でございます。
Posted by 聖境伝説 RMT at 2011年07月13日 22:08
迅速と丁寧な対応!安全な取引!こちらへ【http://www.wired-rmt.jp/rmt/Arad.htm
Posted by レッドストーン rmt at 2011年07月14日 07:59
皆さんのご来店を楽しみにしております【http://www.wired-rmt.jp/rmt/Lineage2.htm
Posted by 聖境伝説 RMT at 2011年07月14日 09:19
ただ今ナインテイルRMT取扱開始いたします!
Posted by TERA RMT at 2011年07月14日 09:25
今の在庫はいっぱいあります。そして、価格は値下がりました
Posted by アラド戦記 rmt at 2011年07月14日 09:31
詐欺に遭わない安心のエスクローサービス、是非この機会にWebMoneyでご利用下さい。
Posted by ラテール rmt at 2011年07月14日 12:32
お世話になります、【http://yahoo-rmt.jp/rmtrul/Maplestory.htm】でございます。
Posted by Arad rmt at 2011年07月14日 15:41
お世話になります、【http://rmt-one1st.jp/game.php?catid=180&actiontype=buysell】でございます。
Posted by rmt at 2011年07月14日 18:29
FF14 RMT注文ページ:【http://www.rmt-iroiro.jp/rmtbuy/AION.htm
Posted by アスタリア RMT at 2011年07月16日 17:56
ご注文は24時間受付中、簡単な購入手続き!
Posted by 聖境伝説 RMT at 2011年07月16日 19:07
今の在庫はいっぱいあります。そして、価格は値下がりました
Posted by ネクソンポイント RMT at 2011年07月16日 20:05
いつもお世話になります【http://www.shop-rmt.jp/gamebuy/lineage2.htm】です
Posted by デカロン rmt at 2011年07月16日 21:16
スタッフと一緒にお客様のご来店を期待しております
Posted by メイプルストーリー rmt at 2011年07月16日 21:54
http://www.kiraku-rmt.jp/rmtbuy/Atlantica.htm】は業内で最大で最安値綜合サイトです。会社の全員は一番サービスを提供していただきます。
Posted by FFXI rmt at 2011年07月17日 10:33
http://www.shop-rmt.jp/gamebuy/Latale.htm】24時間注文受付、夜間、祝日でも迅速対応できる!
Posted by FFXI rmt at 2011年07月17日 10:39
http://www.rmt-link.jp/games/FF11.htm】24時間注文受付、夜間、祝日でも迅速対応できる!
Posted by アスタリア RMT at 2011年07月17日 13:16
FF14 RMT注文ページ:【http://www.rmt-iroiro.jp/rmtbuy/lineage2.htm
Posted by Dekaron rmt at 2011年07月17日 14:47
いつも御世話になっております。【http://www.shop-rmt.jp/gamebuy/Latale.htm】でございます。
Posted by アイオン rmt at 2011年07月17日 15:58
仕事の都合で通貨を稼ぐ時間が無いし、通貨不足と感じなお悩みのお客様いらっしゃいましたら、ウェブRMTが解消させていただきます!
Posted by ドラゴンネスト rmt at 2011年07月17日 17:35
ご注文は24時間受付中、簡単な購入手続き!
Posted by ネクソンポイント RMT at 2011年07月17日 18:50
RMTが初めて!と言うお客様は小口数でも構いませんので、安心を実感して下さい!
Posted by RMT at 2011年07月17日 21:17
 RMT販売ページ:【http://www.rmt-iti.com/gamebuy/Arad.htm
Posted by rmt at 2011年07月17日 22:37
ただ今ナインテイルRMT取扱開始いたします!
Posted by Dekaron rmt at 2011年07月18日 05:03
 RMT販売ページ:【http://www.rmt-roan.jp/gamebuy/Maplestory.htm
Posted by メイプルストーリー rmt at 2011年07月18日 06:59
RMTが初めて!と言うお客様は小口数でも構いませんので、安心を実感して下さい!
Posted by 聖境伝説 RMT at 2011年07月18日 20:17
どうぞよろしくお願いいたします。
Posted by nexon ポイント RMT at 2011年07月18日 22:41
今FF14 RMT激安販売しています
Posted by RF rmt at 2011年07月19日 03:25
http://yahoo-rmt.jp/yahoormt/CABAL.htm】が提供する通貨信用販売サービス。
Posted by Arad rmt at 2011年07月19日 14:10
http://rmt-one1st.jp/game.php?catid=180&actiontype=buysell】より便利になったサービスを、是非一度お試しください。
Posted by リネージュ2 rmt at 2011年07月19日 15:02
ただ今ナインテイルRMT取扱開始いたします!
Posted by rmt at 2011年07月19日 16:43
http://yahoo-rmt.jp/yahoormt/CABAL.htm】が提供する通貨信用販売サービス。
Posted by ネクソンポイント RMT at 2011年07月19日 20:59
http://rmt-one1st.jp/game.php?catid=311&actiontype=buysell】が提供する通貨信用販売サービス。
Posted by アスタリア RMT at 2011年07月19日 21:54
皆さんのご来店を楽しみにしております【http://www.rmt-mab.com/gamebuy/CABAL.htm
Posted by アラド rmt at 2011年07月20日 07:14
ご注文は24時間受付中、簡単な購入手続き!
Posted by アラド rmt at 2011年07月20日 07:26
FF14 RMT注文ページ:【http://yahoo-rmt.jp/yahoormt/Atlantica.htm
Posted by Perfect World rmt at 2011年07月20日 08:41
どうぞよろしくお願いいたします。
Posted by Ragnarok rmt at 2011年07月20日 10:53
こんにちはいつも【http://www.rmt-mab.com/gamebuy/Atlantica.htm】ご愛顧本当にありがとうございます!
Posted by くろネコ RMT at 2011年07月20日 17:19
http://www.rmt-top.com/rmtbuy/Arad.htm】お取引方法などの詳細は、トップページ、またはこちらに記載されております。
Posted by ネクソンポイント RMT at 2011年07月20日 17:30
http://www.info-rmt.com/informt/Aika.htm】経営方針: 信用第一、迅速対応、安全取引!RMT未経験方、小口方でも大歓迎です!
Posted by R2 rmt at 2011年07月20日 21:25
皆さんのご来店を楽しみにしております【http://yahoo-rmt.jp/yahoormt/DragonNest.htm
Posted by メイプル rmt at 2011年07月21日 15:34
 RMT販売ページ:【http://www.info-rmt.com/informt/REDSTONE.htm
Posted by 聖境伝説 RMT at 2011年07月21日 18:01
今から【FF14 RMT】の通貨が入荷しました。お客様はぜひご利用してください
Posted by nexon ポイント RMT at 2011年07月21日 18:38
今FF14 RMT激安販売しています
Posted by テラ RMT at 2011年07月21日 20:55
皆さんのご来店を楽しみにしております【http://www.shop-rmt.jp/gamebuy/Dragonica.htm
Posted by ドラゴンネスト rmt at 2011年07月21日 21:46
どうぞよろしくお願いいたします。
Posted by アトランティカ rmt at 2011年07月22日 06:33
http://www.kiraku-rmt.jp/rmtbuy/Atlantica.htm】より便利になったサービスを、是非一度お試しください。
Posted by ネクソンポイント RMT at 2011年07月22日 10:05
どうぞよろしくお願いいたします。
Posted by Perfect World rmt at 2011年07月22日 11:51
http://www.kiraku-rmt.jp/rmtbuy/REDSTONE.htm】お取引方法などの詳細は、トップページ、またはこちらに記載されております。
Posted by くろネコ RMT at 2011年07月22日 13:43
より皆様にご利用いただけるように、多彩な決済が可能になりました。
Posted by FFXI rmt at 2011年07月22日 14:36
腕時計 価格 オメガ 激安 http://www.advanceshopbossjp.biz/
Posted by オメガ 激安 at 2013年08月01日 18:38
casio 電子辞書 iwc パイロット http://www.shoppingfordriverjp.pw/
Posted by iwc パイロット at 2013年08月13日 04:07
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック