- PR -

Web.Configについて

投稿者投稿内容
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-09 11:39
いつも参考にさせてもらっています。

現在、ASP.NETでWebアプリを作成しようとしているのですが、
アクセスセキュリティのことで行き詰ってしまいました。

1.ベースアプリ(インストール必須)と付属アプリ(インストール任意)を
  1つのWebアプリとして作成します。
  
2.ベースアプリだけをインストールする場合は、付属アプリを
  格納しているフォルダへアクセスできないようにしたい。

構成は
  WindowsXP SP2
SQLServer2005
IIS 6.0
Visual Stadio 2005 .NET Framework 2.0

インストール必須とか任意とか言ってますが、
ベースアプリだけをインストールする場合でも、
付属アプリをインストールしてしまって、
インストール時にWeb.Config等で制御できないかと考えています。

付属アプリをインストールするときに必要なフォルダを
作成すればいいだけなのかもしれませんが、
プロジェクトの方針上こうなってしまいました。

どなたかアドバイスいただければ大変ありがたいです。
何卒、宜しくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-06-09 12:53
付属アプリのフォルダにweb.configを作成し、以下のように記述してみてはどうでしょう。

<configuration>
<system.web>
<authorization>
<deny users ="*"/>
</authorization>
</system.web>
</configuration>

付属アプリを利用するようになる場合は、web.configを削除すればいいと思います。

アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-09 13:25
どっとねっとふぁんさん、ありがとうございます。

付属アプリの下にWeb.Configを作成してみました。

以下がプロジェクト構成です。

プロジェクト
  |
  ⊥ベースアプリフォルダ
  |
  ⊥付属アプリフォルダ
  |    |
  |    ⊥Test.aspx
  |    |
  |    ⊥Web.Config
  |      <authorization>
  |       <deny users ="*"/>
  |      </authorization>
  |
  ⊥Login.aspx
  |
  ⊥Menu.aspx
  |
  ⊥Web.Config
     <authentication mode="Forms">
      <forms name="formauth" loginUrl="Login.aspx"></forms>
     </authentication>
     <authorization>
      <deny users="?" />
     </authorization>


この環境で
ログインが成功してMenu.aspx画面に遷移した後、URLを
「http://localhost/仮想ディレクトリ名/付属アプリフォルダ名/Test.aspx」
と手打ちした場合に、Login.aspxへ戻るようになってしまいました。
Web.Configの設定が悪いのでしょうか?

プロジェクト直下のWeb.Configにはフォーム認証を設定しています。

どなたか、助けてください。
お願いします。

[ メッセージ編集済み 編集者: アルゴ 編集日時 2006-06-09 13:27 ]

[ メッセージ編集済み 編集者: アルゴ 編集日時 2006-06-09 13:33 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-06-09 14:06
Form認証を利用しているのであれば、そうなってしまいますね。
ただ、Login画面は見えるけど、そこでユーザ名とパスワードを入れても
またLogin画面に戻るんじゃないかと思いますけど、ちがいますか?
web.configの設定で全てのユーザを拒否にしてるつもりです。
アクセスできない、ということでは要件は満たすと思うのですが。。。


アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-09 14:20
どっとねっとふぁんさん、早速の回答ありがとうございます。

仰るとおりLogin画面は見えるけど、そこでユーザ名とパスワードを
入れてもまたLogin画面に戻る状態です。

アクセスできないという要件は満たしているのですが、
アクセスエラー画面を作成しておいて、
そちらに遷移するように指定することは出来ないのでしょうか?

無理っぽいということは薄々感じていますが、
何か方法があれば教えていただけますか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-06-09 15:23
web.configをしたのように書き換えてみてください。

<configuration>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
</httpHandlers>
</system.web>
</configuration>

たぶんエラーにすることができると思います。

#っと、このエラー画面の書き換えはどうするんだろ。。。
アルゴ
常連さん
会議室デビュー日: 2004/10/06
投稿数: 36
投稿日時: 2006-06-09 17:25
どっとねっとふぁんさん、度重なる回答ありがとうございます。

Web.Configを書き換えて試してみたのですが、
初回ログイン画面を表示出来ずにエラー画面になってしまいました。

自分でも色々試したのですが、うまくいきませんでした。

ASP.NET初心者のため技術的な判断ができないのですが、
やはり無理ということでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-06-09 18:11
> Web.Configを書き換えて試してみたのですが、
> 初回ログイン画面を表示出来ずにエラー画面になってしまいました。

どこのweb.configを書き換えました?
付属アプリのフォルダにあるweb.configを書き換えると、そのフォルダ内に
アクセスしようとしたときにエラー表示になります。
Login画面が表示されるよりはいいかと思ってこんな方法を提示してみました。

#そか、これができるんだから、HttpHandlerの実装をすれば特定のページを
 表示させるなんてことも可能か?

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