- - PR -
【C#】ログオンユーザのパスワードの取得法
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-01 11:58
いつもお世話になっております、
>現在、検証可能な環境がないので試せませんが、 >DirectoryEntryのコンストラクタに >AuthenticationTypes列挙体を指定するものあります。 >この列挙体のSecureフラグがご希望のもののような気がします。 求めていたものは、この類のものです。 MSDNを探ってみます。 進展があったら、また書き込んでみます。 (別件の作業中なので、時間がかかるかもしれません...) >パスワードがnull参照の場合は、元スレッドの >セキュリティコンテキストを使用してくれるそうです。 これって、『指定しなければ、勝手にWin認証で接続に行く』 的なことと捉えてOKなんでしょうか? なお、私もAD環境を作成しながらプログラムを書いているので、 @AD環境設定がミスっていて動作しない のか Aプログラムの実装が間違っていて動作しない のか、現時点では切り分けできていません... 以上、ありがとうございました。 |
|
投稿日時: 2005-11-04 10:17
いつもお世話になっております、
ADへWin認証で接続する件ですが、 下記のように実装したところ正常に情報を取得できました。 ご指摘頂いたAuthenticationTypes.Secureを下記のように指定すればで良いようです。 DirectoryEntry drEntry = new DirectoryEntry( ADpath,null, null); drEntry.AuthenticationType = AuthenticationTypes.Secure; 現環境は構築中で、Win2003サーバ上からadmin権限を持っているユーザで 実施していますが、おそらくこのアプローチで良いんだと思います。 ※あとは運用として下記をどう考慮しようかといったところです。 1.ADでのユーザ権限の設定 2.フォレストが複数あった場合の構成での運用法 とりあえず、ご報告まで。 多数のアドバイス、ありがとうございました。 下記にサンプルコードを示します。 〜〜〜サンプルコード〜〜〜 string ADpath = "LDAP://ServerName"; DirectoryEntry drEntry = new DirectoryEntry( ADpath,null, null); drEntry.AuthenticationType = AuthenticationTypes.Secure; Object obj = drEntry.NativeObject; // LDAP検索オブジェクトを作成 DirectorySearcher drSearch = new DirectorySearcher(drEntry); // アカウントフィルターを設定 drSearch.Filter = "(SAMAccountName=*)"; // Common Name(cn)プロパティを同時に // 取得するように設定 drSearch.PropertiesToLoad.Add("cn"); // 検索する SearchResultCollection scn = drSearch.FindAll(); if( scn == null) { MessageBox.Show("対象ユーザーがいません。"); return; } foreach( SearchResult sResult in scn) { MessageBox.Show((string)sResult.Properties["cn"][0]); } 〜〜〜〜〜〜〜 |