C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 複数のEXEで認証情報を共有するには?


(過去ログ 13 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3746 / inTopicNo.1)  複数のEXEで認証情報を共有するには?
  
□投稿者/ C#恐怖症 (9回)-(2007/05/22(Tue) 07:02:32)

分類:[.NET 全般] 

いつもお世話になっています。
掲題の件で質問させて下さい。

チュートリアル : カスタムの認証および承認の実装
http://msdn2.microsoft.com/ja-jp/library/ms172766(VS.80).aspx

VB.NETのチュートリアルですが、上記URLを参考にカスタム認証を実装しました。
これをシステムに組み込みたいのですが、機能毎にEXEになっており、
例えばA.EXE起動時に認証してもB.EXEを起動した場合に、再度認証を行わないといけません。

A.EXEからリフレクションを使用してB.EXEを起動させれば認証情報を引き継げるのですが、
必ずしもA.EXEからB.EXEが起動される訳では無いですし、デスクトップのショートカットなどから起動される場合もあります。

このように認証情報を引き継ぐ、もしくは複数のAppDomainでクラスのインスタンスを共有出来れば
解決出来そうな気がするのですが、どのようにすれば良いのでしょうか?

引用返信 編集キー/
■3799 / inTopicNo.2)  Re[1]: 複数のEXEで認証情報を共有するには?
□投稿者/ Jitta (333回)-(2007/05/23(Wed) 22:29:58)
Jitta さんの Web サイト
No3746 (C#恐怖症 さん) に返信
 各実行ファイルが参照できるディレクトリ(%AppData% 以下のどこか)に、資格情報をシリアル化しておきます。
認証および承認を行う実行ファイル以外は、資格情報が有るか無いかを調べ、有ればロード、無ければ・・・どうしたいのかな?それぞれの処理を行えばよいでしょう。
また、認証および承認を行う実行ファイルは、自身が終了するときに資格情報を削除します。

ごめん、昨日、上げ忘れてた。
引用返信 編集キー/
■3805 / inTopicNo.3)  Re[2]: 複数のEXEで認証情報を共有するには?
□投稿者/ 中博俊 (1075回)-(2007/05/24(Thu) 00:06:50)
中博俊 さんの Web サイト
だめだめそんなことしちゃ。
セキュリティホールなのでその実装はだめぇぇ

めんどくさかったので書かなかったんですよね。

まず旧来の手法では共有メモリという仕組みです。でもこれは.NETでは除外。
でどうするかというと、資格情報を確認する仕組みを入れる。

ログイン情報はADへのログインを充当しWindows認証として、アプリケーションではパスワードは持たない。絶対に。
で、Windowsのログインプリンシパルの情報だけあてるサービスを経由して資格の確認を行う。
実際の処理はすべてそのサービスに実装させて認証などはそのアプリケーションが行う。こうすればいけます。

ようはASP.NETでやっているような仕組みのミニマム版をつくりあげるわけです。

間違ってもパスワードを保存させたり入力させたりしてはいけません。
引用返信 編集キー/
■3807 / inTopicNo.4)  Re[3]: 複数のEXEで認証情報を共有するには?
□投稿者/ Jitta (336回)-(2007/05/24(Thu) 07:39:00)
2007/05/24(Thu) 07:44:20 編集(投稿者)

No3805 (中博俊 さん) に返信
> だめだめそんなことしちゃ。
> セキュリティホールなのでその実装はだめぇぇ
>
> めんどくさかったので書かなかったんですよね。
>
> まず旧来の手法では共有メモリという仕組みです。でもこれは.NETでは除外。
> でどうするかというと、資格情報を確認する仕組みを入れる。
>
> ログイン情報はADへのログインを充当しWindows認証として、アプリケーションではパスワードは持たない。絶対に。
> で、Windowsのログインプリンシパルの情報だけあてるサービスを経由して資格の確認を行う。
> 実際の処理はすべてそのサービスに実装させて認証などはそのアプリケーションが行う。こうすればいけます。
>
> ようはASP.NETでやっているような仕組みのミニマム版をつくりあげるわけです。
>
> 間違ってもパスワードを保存させたり入力させたりしてはいけません。

え?
ASP.NETの、独自認証…データベースの中にユーザーとパスワードを持って、FORM認証するイメージだと思ったのですけど?
Windows認証なら、ログオンしている時点ですんでいるかな、と。また、他のPCに認証にいく雰囲気でもないし...


参考
http://www.atmarkit.co.jp/fdotnet/aspnet/aspnet19/aspnet19_01.html
引用返信 編集キー/
■3816 / inTopicNo.5)  Re[4]: 複数のEXEで認証情報を共有するには?
□投稿者/ 中博俊 (1077回)-(2007/05/24(Thu) 13:00:23)
中博俊 さんの Web サイト
ファイルに保存しちゃだめでしょ?ハイジャックされます。
Expireも必要だし、それなりの仕組みを用意しなくちゃ危険すぎますよ。
引用返信 編集キー/
■3886 / inTopicNo.6)  Re[3]: 複数のEXEで認証情報を共有するには?
□投稿者/ C#恐怖症 (10回)-(2007/05/27(Sun) 08:21:10)
返信遅れて申し訳ありません。

> まず旧来の手法では共有メモリという仕組みです。でもこれは.NETでは除外。
これは、.NETFrameworkの機能として持っていないという事でしょうか?
それともWin32APIを呼び出して使用するという方法も.NETではしてはいけないという事なのでしょうか?

> ログイン情報はADへのログインを充当しWindows認証として、アプリケーションではパスワードは持たない。絶対に。
> で、Windowsのログインプリンシパルの情報だけあてるサービスを経由して資格の確認を行う。
> 実際の処理はすべてそのサービスに実装させて認証などはそのアプリケーションが行う。こうすればいけます。

やはり認証だけの機能を別に作って、すべてのEXEはその機能を使用せいという事ですね。

解決済み
引用返信 編集キー/
■3917 / inTopicNo.7)  Re[4]: 複数のEXEで認証情報を共有するには?
□投稿者/ Jitta (343回)-(2007/05/28(Mon) 22:11:06)
Jitta さんの Web サイト
No3886 (C#恐怖症 さん) に返信
> これは、.NETFrameworkの機能として持っていないという事でしょうか?
> それともWin32APIを呼び出して使用するという方法も.NETではしてはいけないという事なのでしょうか?
 尋ねているなら、「解決済み」じゃないでしょ(^-^;
 ドメイン間通信という方法もある。


中さん:
> ファイルに保存しちゃだめでしょ?ハイジャックされます。
> Expireも必要だし、それなりの仕組みを用意しなくちゃ危険すぎますよ。
 Windows アプリケーションだという時点で、ほとんどセキュリティ的なことを考えていません。と、前置き。

 認証情報は、Windows の認証情報とは違うのではないでしょうか。そのため、ハイジャックしても、利用するところがないと思うのですが?
って、ああ?!
> また、このチュートリアルでは、IPrincipal から派生するクラスのインスタンスを My.User.CurrentPrincipal に設定することによって、アプリケーション スレッドの既定の ID である Windows の ID をオーバーライドする方法も説明します。

これは、まずいやん(^-^;
っていうか、例がまずくね?少なくとも、チュートリアルで、注意書きなしにやっていい内容じゃないと思う。。。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -