- PR -

【C#】AD連携について

1
投稿者投稿内容
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2005-10-21 16:34
いつもお世話になっております。

AD連携サービスについて教えてください。

ADに参加しているクライアントPC上のアプリから
現在クライアントPCでログオンしているユーザのAD標準スキーマ情報
(名前、電話番号、メールアドレス)を取得する方法を調べています。

調査したところDirectoryEntryやDirectorySearcherを使用するということはわかり、
下記のように実装しました。
(LDAP接続文字列の形式をよくわかっていません。
動かないので、きっとバグってます...)

●質問1
ログオンしているユーザのAD連携時にユーザ入力させずにユーザ名と
パスワード情報を自動で取得する方法はあるんでしょうか?

●質問2
下記ソースで例外が発生しています。
可能であれば、何が悪いかご指摘をお願いします。

LDAP接続文字列がまずい?と予想しているのですが、
『DC=』とか『CN=』とかの理解もいまいちなので...
自分では良くわかりません...

 例外詳細:COMエラー『サーバから紹介が戻ってきました。』

〜〜〜ソースを下記に示します。〜〜〜

string ADpath = @"LDAP://CN=Users,DC=domain,DC=local";
string UserId = "username" //ログオンユーザのアカウント
string passwd = "passwd"; //ログオンユーザのパスワード

DirectoryEntry drEntry = new DirectoryEntry( ADpath,UserId, passwd);

//↓ここで例外がスローされます。(例外:COMエラー『サーバから照会が戻ってきました。』)
Object obj = drEntry.NativeObject;
// LDAP検索オブジェクトを作成
DirectorySearcher drSearch = new DirectorySearcher(drEntry);

// アカウントフィルターを設定
drSearch.Filter = ("(objectCategory=Person)");

drSearch.PropertiesToLoad.Add("userPrincipalName");

// 検索する
SearchResultCollection scn = drSearch.FindAll();
if( scn == null)
{
   MessageBox.Show("対象ユーザーがいません。");
   return;
}

foreach( SearchResult sResult in scn)
{
   MessageBox.Show((string)sResult.Properties["userPrincipalName"][0]);
}

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

以上、お忙しいとは思いますが、よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)