- - PR -
ノータッチデプロイメントからWebサービスの使用でセキュリティ例外
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-03-17 11:23
.NET Framework 1.1 でノータッチデプロイメントからWebサービスの使用を試しています。
何を困っているかと言いますと、WebサーバからWebサービスを使用するexeを実行したときに 「例外 'System.Security.SecurityException' が IEExec.exe で発生しました。」 というエラーが出てしまうのです。 セキュリティの問題だな、というのはわかるのですが、ちょっと気になる部分があったので投稿します。 具体的には、以下のようなことをしました。 @WindowsApplicationプロジェクトを作成し、適当な仮想ディレクトリに配置。 Aランタイムセキュリティポリシーをリセット(LocalIntranet_Zoneのアクセス許可セットをLocalIntranetに) A-a @をWebサーバから実行 ⇒ OK! A-b @にSystem.Web.Servicesを参照設定し、Webサーバから実行 ⇒ NG! BランタイムセキュリティポリシーのLocalIntranet_ZoneをFullTrustに変更 B-a @をWebサーバから実行 ⇒ OK! B-b @にSystem.Web.Servicesを参照設定し、Webサーバから実行 ⇒ OK! この結果から、セキュリティポリシーをいじらないと System.Web.Services を参照設定することすらできないのだろうか?と疑問に思いました。 しかし、 MSDN Online = 10 行シリーズ〜 10 行でズバリ !! ノータッチ デプロイメント 〜 http://www.microsoft.com/japan/msdn/thisweek/10lines/notouch_deployment.asp 「データベース アクセスを実現するには、XML Web サービスを活用することで セキュリティポリシーを変更することなく実現することができます。」 とありますし、 @IT:特集 ノータッチ・デプロイメント 「コードが配置されたサイトと同一サイトのWebサービスに限り使うことができる。 これは、NetCodeGroupポリシーの「同一サイトへのWebアクセス許可」によるもの である。これにより、Webサービス経由でデータベースを利用することが可能にな る。」 http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/ntdeploy_05.html とあるのでやり方はあるはずと思いました。 (ところで、「Webアクセス」というアクセス許可は存在するが 「同一サイトへのWebアクセス許可」というアクセス許可は存在するのか?) セキュリティポリシーを変更することなく、System.Web.Servicesを参照設定したexeをセキュリティ例外が発生することなくWebサーバから起動するにはどうしたらよいのでしょうか? ご意見お待ちしております。 [ メッセージ編集済み 編集者: かめたろ 編集日時 2004-03-17 11:27 ] | ||||
|
投稿日時: 2004-03-17 12:10
えーと、
WindowsApplicationのexeをWeb サービスと同じ仮想ディレクトリに置いて試されて見ては如何ですか? このセキュリティの話は、AppBaseとの関係になります。今、動作しているexeのAppBaseと同じ出自(URL)のWebサービスであれば問題ないと思うのですが... | ||||
|
投稿日時: 2004-03-17 12:15
おそらく、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1833&forum=7 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2754&forum=7 このあたりのスレッドで参照されている、MSDN Magazine(英語)へのリンクのどれかの記事に、書いてあります。 上記スレッドは、「msdn magazine」を、「すべて含む」スレッドを、「.NET Insider」から検索しました。 | ||||
|
投稿日時: 2004-03-17 13:03
さっそくのご返答ありがとうございます。
まずA.Kさまのご指摘ですが、 [仮想ディレクトリ] Page.aspx ntd.exe Service.asmx こんな構成にしてあります。 で、同じサイト内ならWebサービスできるって書いてあんのにできないじゃん、と思ったわけです。例外が発生するタイミングは、Webメソッドを呼び出すところではなくexeをIEExecが実行しようとしたところなので、同一サイトがどうこうではないのかな?と。 AppBaseですね。調べてみます。 次にJittaさま、お世話になっております。 ご指摘の過去ログ、以前目を通した記憶があります。 しかし、当時は、ノータッチ?そんなのもあるのか・・・程度だったもので。 この件に関しても、過去ログを探しに探したんですが見逃してました。 これから熟読してみます。 | ||||
|
投稿日時: 2004-03-17 14:19
かめたろさん、こんにちは。
同一のディレクトリでなくても良かった筈ですが、exeが参照するWebサービスのURLと、exeを呼び出すURL(IEのアドレスバーに表示されるURL)とで、ホスト名の記述が完全に一致してないとNGです。 例えばどちらか一方が、ホスト名のみでドメインサフィックスを省略していたり、IPアドレスを指定していたりする場合です。 念のため、確認してみて下さい。 | ||||
|
投稿日時: 2004-03-17 15:22
皆さんアドバイスをありがとうございます。
あのー、とてもお恥ずかしいことなのですが・・・ 私、ちょっと勘違いしてるっぽいのです。 ブラウザのセキュリティと.NETのセキュリティと自分の頭をリセットしてみました。 もう一度、新規プロジェクトを作って1からやりました。うまくいきました。 規定のセキュリティレベルで普通にWebServiceを参照して実行できました。 うまくいく奴といかない奴で何が違ってるのかを比べてみると、Sub Main の中のコードの中にProcessオブジェクトを参照している箇所が・・・。 Sub Main の中を見逃してました。 なんとなく途中で追加したコードで、IEExecがほんとに動いてんだなって言うことを確認したかっただけなんです。 したがってA-bのケースは気のせいでした。何度か検証したつもりだったのですが。 また、同じホスト名であればWebサービスOKでした。 ご迷惑をおかけしました。 [ メッセージ編集済み 編集者: かめたろ 編集日時 2004-03-17 15:48 ] |
1