2009-03-27 34 views
1

別のサイトのサブディレクトリにasp.net(動的データ)Webサイトがアプリケーションとして設定されています。このサイトでは、トップレベルサイトとは異なるセキュリティ設定が必要です。何かのように:ASP.NET web.configの認証設定が無視される

<authorization> 
     <allow roles="ADMIN"/> 
     <deny users="*"/> 
    </authorization> 

これらの設定はサブサイトでは無視されます。しかし、彼らはトップレベルのサイトで動作しますが、トップレベルのサイトに設定されていても、サブサイトに継承されず、自由にアクセスできます。これらの設定が無視される原因は何ですか?私が追加しようとしました:

<location path="." inheritInChildApplications="false"> 

をトップレベルのweb.configファイルにして、サブサイトで上記の認可ルールを設定し、だけでも、すべてのユーザーを拒否しようとしました。サイトにアクセスすると、次のようになります。http://mysite/mybrokensite

私はWindows認証を使用しています。

+0

タグを確認できますか? –

答えて

2

私は重要なことは、それがIIS内の別のアプリケーションの場合は、それはそれは自身のウェブだ持っている必要があり、別のサイト

の サブディレクトリにアプリケーションとして設定し、この

ウェブサイトだと思います。設定ファイルとセキュリティ設定をそこから設定することができます。したがって、メインサイト用に1つのweb.configを、サブサイト用に1つのweb.configを作成します。実際には2つのアプリケーションです。

あなたのウェブサイトの下にあるサブフォルダの場合、これは適用されません。それはIISの下でそれをどのように設定したかによって異なります。それは別のアプリの場合、アイコンは世界/キャベツの種類のアイコンになります。それがサブフォルダであれば、そのアイコンはフォルダになります。

+0

ウェブサイトは別のアプリケーションとして設定されています(キャベツタイプのアイコンを持っています)。独自のweb.configを持っています。だから、なぜweb.configの設定を読んでいないのか分かりません。私は両方のweb.configs(トップレベルとサブレベルのサイト)のセキュリティ設定を無駄に設定しようとしました。 –

+0

メインサイトだけでなくサブサイト用にWindows認証を設定しましたか?すなわち、サブサイトを右クリックし、プロパティ、ディレクトリセキュリティタブ、トップ編集ボタンを選択します。デフォルトでは匿名に設定され、設定が無視されます –

0

Timの答えを詳しく説明するには、IISで仮想ディレクトリとして設定されていることを確認してください。 IIS Admin、Directory(またはHome Directory)タブでそのディレクトリのプロパティページを見てください。アプリケーションラベルがグレー表示されている場合は、[作成]ボタンを押します。これでIISはそのディレクトリからweb.configをロードします。

0

多くの人がサブフォルダ認証に関して同じ状況に直面していたので、私は要約をタイプしました。

サブフォルダの許可

  • ASP.NETは一つだけ のアプリケーションのための単一の 認証モードを持つことができます。
  • 異なる アプリケーションは、それらの間でリソース を共有できません。

シナリオ

のは、ホームページはログインダイアログを要求してはならないとしましょう。それはユーザーがログインしていなくても通過できるようにすべきです。しかし、同じアプリケーションでは、別のフォルダ内の別のページで、おそらくユーザーネットワークのログインIDを使用してデータベーステーブルに対するユーザーのアクセス許可をチェックする必要があります。デフォルトでは、IEはホスト名だけを持つすべてのWebサイトをイントラネットとして扱います。デフォルトのイントラネット設定により、Windows認証が使用されている場合、ログインダイアログが表示されず、ユーザーのログインとパスワードがアプリケーションに渡されません。しかし、アプリケーションが実際のドメインを持っている場合、IEはそれがインターネットサイトであると考え、Windows認証が使用されている場合はログインとパスワードの入力を求めます。


Windows認証を使用してインターネットサイトのログインダイアログをpromoptしないようにする唯一の方法は、また、IISで匿名認証をオンにすることです。ただし、匿名がWindows認証より優先されるため、ログイン情報をキャプチャする機能が失われます。良いニュースは、その問題を解決する方法があるということです。アプリケーションのサブフォルダがログイン情報を取得する必要がある場合は、web.configのLocation要素の親認証を上書きする必要があります。

IISで

1に、次のように認証を設定:

  1. 有効に匿名認証、
  2. 有効Windows認証

2のWeb.Configに以下を追加します。

<authentication mode="Windows" /> 
    <authorization> 
    <allow users="*" /> 
</authorization> 

<!-- secured is the relative subfolder name. deny anonymous user, so only the authenticated login will pass through --> 
<location path="secured" allowOverride="true"> 
    <system.web> 
    <authorization>   
     <deny users="?" /> 
    </authorization> 
    </system.web> 
</location> 
関連する問題