18

IIS7 でフォーム認証を使用して開発サイトをパスワード保護していますが、サイトに静的 HTMLファイル + login.aspx + web.config しか含まれていない場合、認証がバイパスされるようです。

ファイルの名前を .aspx に変更すると、ログイン フォームが表示されます。非常に単純なログイン スクリプトがあり、後で index.html にリダイレクトする必要があります。

助言がありますか?要約すると、サイト全体は (今のところ) HTML を使用しており、パスワードで保護する必要があります。

<authentication mode="Forms">
  <forms name="appNameAuth" path="/" loginUrl="~/login.aspx" defaultUrl="index.html" protection="All" timeout="525600">
    <credentials passwordFormat="Clear">
      <user name="[user]" password="[password]" />
    </credentials>
  </forms>
</authentication>
<authorization>
  <deny users="?" />
</authorization>
4

4 に答える 4

11

IIS7では、フォーム認証で*.htmlまたは*.htmファイル(またはその他の.net以外の拡張子)を保護する場合は、web.configに次の行を追加します。

<compilation>
    <buildProviders>
        <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
        <add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
    </buildProviders>
</compilation>

<system.webServer>
     <handlers>
         <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG"   type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
         <add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
     </handlers>
</system.webServer>
于 2010-10-24T17:06:06.920 に答える
10

フォーム認証によって HTML ファイルをロックするには、ASP.NET で提供する必要があります。IIS でこれを行うには、必要な拡張子 (.html、.htm など) を aspnet_isapi.dll に関連付けます。

ASP.NET がこれらのファイルにサービスを提供すると、他の aspx ページと同様に、それらのファイルのアクセス許可を指定できます。

詳細については、MSDNを参照してください。

既定では、IIS は静的コンテンツ自体 (HTML ページ、CSS、画像ファイルなど) を処理し、.aspx、.asmx、または .ashx の拡張子を持つページが要求された場合にのみ、ASP.NET ランタイムに要求を渡します。

ただし、IIS 7 では、IIS と ASP.NET のパイプラインを統合できます。いくつかの構成設定を行うだけで、IIS 7 をセットアップして、すべての要求に対して FormsAuthenticationModule を呼び出すことができます。さらに、IIS 7 では、あらゆる種類のファイルに対して URL 承認規則を定義できます。詳細については、「IIS6 と IIS7 のセキュリティ間の変更点」、「Web プラットフォームのセキュリティ」、および「IIS7 の URL 承認について」を参照してください。

簡単に言うと、IIS 7 より前のバージョンでは、フォーム認証のみを使用して、ASP.NET ランタイムによって処理されるリソースを保護できます。同様に、URL 承認規則は、ASP.NET ランタイムによって処理されるリソースにのみ適用されます。しかし、IIS 7 では、FormsAuthenticationModule と UrlAuthorizationModule を IIS の HTTP パイプラインに統合して、この機能をすべての要求に拡張することができます。

于 2010-08-28T05:25:58.527 に答える
2

これは古い質問ですが、pomarc の回答のリンクは非常に便利です。以下は、IIS7 に適した概要です。

web.configで、以下を追加または変更<handlers>します<system.webServer>

<handlers>
  <add name="HTML" path="*.html" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" />
</handlers>

verb値を必要なものに置き換えます。scriptProcessor値を環境の正しいパスに置き換えます。

次に、以下を追加または変更<compilation>します。<httpHandlers><system.web>

<compilation debug="false" strict="false" explicit="true">
  <buildProviders>
    <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)-->
    <add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
  </buildProviders>
</compilation>
<httpHandlers>
  <!--Add below so .html file will be handled by ASP.NET (for use of Forms Authentication)-->
  <add verb="GET, HEAD, POST, DEBUG" path="*.html" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>

verb値を必要なものに置き換えます。

コンマ「,」で区切られた拡張子をさらに含めることもできます

于 2016-05-11T08:19:28.947 に答える
1

数日前、このスレッドの fr33m3 @ 11-21-2007, 3:19 PM による投稿に従って、同じ問題を解決しました : http://forums.asp.net/t/1184547.aspx 2.から5.までの手順で完成!

これが私を助けたようにあなたを助けることができることを願っています.

于 2010-10-15T09:26:53.487 に答える