- PR -

ノータッチデプロイメントからWebサービスの使用でセキュリティ例外

1
投稿者投稿内容
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 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 ]
A.K
会議室デビュー日: 2001/08/10
投稿数: 10
投稿日時: 2004-03-17 12:10
えーと、
WindowsApplicationのexeをWeb サービスと同じ仮想ディレクトリに置いて試されて見ては如何ですか?
このセキュリティの話は、AppBaseとの関係になります。今、動作しているexeのAppBaseと同じ出自(URL)のWebサービスであれば問題ないと思うのですが...
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 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」から検索しました。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2004-03-17 13:03
さっそくのご返答ありがとうございます。

まずA.Kさまのご指摘ですが、
 [仮想ディレクトリ]
  Page.aspx
  ntd.exe
  Service.asmx
こんな構成にしてあります。
で、同じサイト内ならWebサービスできるって書いてあんのにできないじゃん、と思ったわけです。例外が発生するタイミングは、Webメソッドを呼び出すところではなくexeをIEExecが実行しようとしたところなので、同一サイトがどうこうではないのかな?と。
AppBaseですね。調べてみます。

次にJittaさま、お世話になっております。
ご指摘の過去ログ、以前目を通した記憶があります。
しかし、当時は、ノータッチ?そんなのもあるのか・・・程度だったもので。
この件に関しても、過去ログを探しに探したんですが見逃してました。
これから熟読してみます。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-03-17 14:19
かめたろさん、こんにちは。

引用:

 [仮想ディレクトリ]
  Page.aspx
  ntd.exe
  Service.asmx
こんな構成にしてあります。
で、同じサイト内ならWebサービスできるって書いてあんのにできないじゃん、と思った


同一のディレクトリでなくても良かった筈ですが、exeが参照するWebサービスのURLと、exeを呼び出すURL(IEのアドレスバーに表示されるURL)とで、ホスト名の記述が完全に一致してないとNGです。
例えばどちらか一方が、ホスト名のみでドメインサフィックスを省略していたり、IPアドレスを指定していたりする場合です。

念のため、確認してみて下さい。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2004-03-17 15:22
皆さんアドバイスをありがとうございます。

あのー、とてもお恥ずかしいことなのですが・・・
私、ちょっと勘違いしてるっぽいのです。

ブラウザのセキュリティと.NETのセキュリティと自分の頭をリセットしてみました。
もう一度、新規プロジェクトを作って1からやりました。うまくいきました。
規定のセキュリティレベルで普通にWebServiceを参照して実行できました。

うまくいく奴といかない奴で何が違ってるのかを比べてみると、Sub Main の中のコードの中にProcessオブジェクトを参照している箇所が・・・。
Sub Main の中を見逃してました。
なんとなく途中で追加したコードで、IEExecがほんとに動いてんだなって言うことを確認したかっただけなんです。

したがってA-bのケースは気のせいでした。何度か検証したつもりだったのですが。

また、同じホスト名であればWebサービスOKでした。

ご迷惑をおかけしました。

[ メッセージ編集済み 編集者: かめたろ 編集日時 2004-03-17 15:48 ]
1

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