- PR -

【C#】ログオンユーザのパスワードの取得法

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

C#アプリ内で、現在実行しているPCユーザのパスワードを取得する
方法はないでしょうか?
(認証用のAPIに引数として渡すためなので、中の値を見れる必要はありません。)

シングルサインオンにしたいだけなのですが、どう取得したらよいのでしょうか...
(もしかしてセキュリティ上できないのでしょうか!?)

以上、ご存知の方いらっしゃいましたら、よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-10-31 18:49
普通、管理者(administrator)でさえ自分や他のユーザーのパスワードを見ることはできませんよね。
パスワード変更のときには、すでにログインしているにも関らず現在のパスワードを求められるくらいですから。

私はWindowsの機能を全て知っているわけではありませんが、おそらく無理かと・・・。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-10-31 19:16
引用:

C#アプリ内で、現在実行しているPCユーザのパスワードを取得する
方法はないでしょうか?



無いです。
セキュリティ上の制約です。

引用:

シングルサインオンにしたいだけなのですが、



端末のログオンからってことだと、Windows 認証で統一するしかないでしょうね。


[ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2005-10-31 19:19 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-31 21:42
どこで、どういう権限で実行されている、どんなアプリケーションから、
どこへ、どんな形でログインしたいのでしょう?


ひどりさんがおっしゃるように、「Windows 認証」にすればいいという話だと思いますけど、例えば データベースに対して接続する、とかだったら、無理、って言う話になるかもしれません。
# Oracle や SQL Server なら、Windows 認証をサポートしているので、いけます
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-11-01 09:52
引用:

シングルサインオンにしたいだけなのですが


どこでサインオンして、どこで使えるようにしたいですか?
具体的なことが判れば代替手段が提示できるかもしれません。

_________________
たつごろー
codeseek
こみゅぷらす
Makoto
大ベテラン
会議室デビュー日: 2004/03/31
投稿数: 133
投稿日時: 2005-11-01 09:59
To:回答を頂いたみなさま

いつもお世話になっております。
回答を頂いたみなさま、ありがとうございます。

詳しく下記に書いてみました。

●運用イメージ
ActiveDirectoryサーバがあり、各ユーザのクライアントPCは、
ADドメインにログオンしている状態です。
この各ユーザのクライアントPCで、C#アプリを起動してもらいます。
(※通常のアプリ使用です。)

このときアプリより、LDAPでADの標準スキーマに登録されている情報
を取得したいのです。
(このADからのデータ取得の際の認証をSSOと表現しています。)

●やりたいこと
このAD認証処理を実施する場合に、LDAP接続パス、ユーザID、パスワードを
DirectorySearcherクラスとDirectoryEntryクラスに渡す必要があるようなのです。
ただ、認証画面を一回一回出すのでは、ユーザからすると非常に使い勝手が悪いので、
なにか回避策はないものかと思っての投稿でした。

単純にWindwos認証を使用することができるのであれば、それが解決策なのですが、
DirectorySearcherクラスとDirectoryEntryクラスに対して、
『どのようにWin認証をするように指定してよいか』がわからないのです。

ちなみに、もし認証画面が一回一回でてしまう場合の回避策として
下記を検討中ですが、できれば避けたいと考えています。

●回避案
一度目は、必ず入力させる。そのタイミングで情報を取得してレジストリあたりに
保存する。で、2回目以降は、レジストリを参照する。
(欠点は、AD側のデータ変更が入っても古いデータで動作してしまうことです。)

良いアイデアなどありましたら、よろしくお願いします。
以上です。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2005-11-01 10:30
引用:

Makotoさんの書き込み (2005-11-01 09:59) より:

●運用イメージ
ActiveDirectoryサーバがあり、各ユーザのクライアントPCは、
ADドメインにログオンしている状態です。
この各ユーザのクライアントPCで、C#アプリを起動してもらいます。
(※通常のアプリ使用です。)

(中略)

単純にWindwos認証を使用することができるのであれば、それが解決策なのですが、
DirectorySearcherクラスとDirectoryEntryクラスに対して、
『どのようにWin認証をするように指定してよいか』がわからないのです。


南部です。

現在、検証可能な環境がないので試せませんが、
DirectoryEntryのコンストラクタに
AuthenticationTypes列挙体を指定するものあります。
この列挙体のSecureフラグがご希望のもののような気がします。

MSDNライブラリ

パスワードがnull参照の場合は、元スレッドの
セキュリティコンテキストを使用してくれるそうです。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-11-01 10:31
引用:

DirectorySearcherクラスとDirectoryEntryクラスに対して、
『どのようにWin認証をするように指定してよいか』がわからないのです。


これが聞きたいことですね。
1.DirectorySearcherクラスとDirectoryEntryクラスを使うコードを書いた
2.ログオンしてるユーザも権限があるもの
3.だけど、プログラムを起動するたびにログオンしろという画面がでてくる
ですか?

質問のまとめだけしてて申し訳ないですが、これを実証する環境が手元にな
いので回答を避けます。

が、
引用:

一度目は、必ず入力させる。そのタイミングで情報を取得してレジストリあたりに
保存する。で、2回目以降は、レジストリを参照する。


これはやめましょう。

_________________
たつごろー
codeseek
こみゅぷらす

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