web-dev-qa-db-ja.com

ASP.NETを使用して純粋なHTMLページでフォーム認証を行う方法は?

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>
18
Abe

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>
10
bigtv

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

ASP.NETがこれらのファイルを処理すると、他のaspxページと同じようにファイルのアクセス許可を指定できます。

詳細については、 [〜#〜] msdn [〜#〜] :を参照してください。

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

ただし、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パイプラインに統合して、この機能をすべての要求に拡張できます。

10
Kelsey

これは古い質問ですが、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値を必要な値に置き換えます。

カンマ '、'で区切ってさらに拡張子を含めることもできます

2
Mango Wong

私は数日前に同じ問題を解決しました。fr33m3@ 11-21-2007、3:19 PMこのスレッドで: http:// forums.asp.net/t/1184547.aspx 2。から5までのすべての手順に従ってください。これで完了です。

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

1
pomarc