none
IIS7.5のフォーム認証でiPhoneアプリのインストールに必要となるファイルへ直接アクセスできてしまう RRS feed

  • 質問

  • IIS7.5にてフォーム認証後、iPhoneアプリダウンロードページへ遷移するWebサイトを構築しました。

    構成は以下の通りです。

    ----------------------------------------

    [root]

    ┣Login.aspx

    ┣Web.config(1)

    ┗[auth]

      ┣index.aspx

      ┣index.plist

      ┣XYZ.ipa

      ┗Web.config(2)

    ----------------------------------------

    各Web.configは次のような記述がしてあります。

    (1)抜粋

    		<authentication mode="Forms">
    			<forms name="XYZ" loginUrl="Login.aspx" defaultUrl="auth/index.aspx" protection="All" timeout="30" />
    		</authentication>
    

    (2)

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.web>
        <authorization>
          <deny users="?" />
        </authorization>
      </system.web>
    </configuration>
    

    この記述で認証されていない場合はauthフォルダ内のファイルにアクセスできずにLogin.aspxにリダイレクトされると考えているのですが、

    リダイレクトされるのはindex.aspxだけでindex.plistとXYZ.ipaには直接アクセスできてしまう状況です。

    ASP.NETで管理されないファイルに対してはIIS上で何らかの設定が必要という情報まではわかっているのですが、

    その設定方法がわからない状況です。

    なお、下記サイトは参考にしたのですが、うまくいきませんでした。

    http://blogs.msdn.com/b/osamum/archive/2009/04/23/iis-7.aspx

    すいませんがアドバイスをお願いいたします。

    2014年10月22日 13:55

回答

  • 質問する際は、最低限のマナーとして、まず最初にご自分の環境(OS, ASP.NET, Visual Studio のバージョンなど)を書いてもらえませんか?

    以下を確認してください。

    (1) IIS のアプリケーションプールの設定で「マネージパイプラインモード」は「統合」になっているか。

    (2) deny users="?" として試す前にブラウザその他のキャッシュは削除したか。

    (3) それでもダメなら以下のページに書いてあるように web.config を設定してみる。

    Apply ASP.NET Authentication and Authorization Rules to Static Content
    with IIS 7.0's Integrated Pipeline Feature
    http://aspnet.4guysfromrolla.com/articles/122408-1.aspx

    • 回答としてマーク fizzy0909 2014年10月24日 0:28
    2014年10月22日 15:34

すべての返信

  • 質問する際は、最低限のマナーとして、まず最初にご自分の環境(OS, ASP.NET, Visual Studio のバージョンなど)を書いてもらえませんか?

    以下を確認してください。

    (1) IIS のアプリケーションプールの設定で「マネージパイプラインモード」は「統合」になっているか。

    (2) deny users="?" として試す前にブラウザその他のキャッシュは削除したか。

    (3) それでもダメなら以下のページに書いてあるように web.config を設定してみる。

    Apply ASP.NET Authentication and Authorization Rules to Static Content
    with IIS 7.0's Integrated Pipeline Feature
    http://aspnet.4guysfromrolla.com/articles/122408-1.aspx

    • 回答としてマーク fizzy0909 2014年10月24日 0:28
    2014年10月22日 15:34
  • 質問する際は、最低限のマナーとして、まず最初にご自分の環境(OS, ASP.NET, Visual Studio のバージョンなど)を書いてもらえませんか?

    失礼いたしました。

    環境はOSがWindowsServer2008R2、NET Framework2.0、VSは2008でした。

    結論から言うと、解決することができました。

    ご紹介いただいたサイトにあった以下の記述

    <configuration> 
       <system.web> 
          ... 
       </system.web> 
    
       <system.webServer> 
          <modules> 
             <remove name="FormsAuthenticationModule" /> 
             <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" /> 
              
             <remove name="UrlAuthorization" /> 
             <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
          </modules> 
       </system.webServer> 
    </configuration>

    を追加することで認証なしで直接アクセスができないようになりました。

    ありがとうございました。

    2014年10月24日 0:28
  • ASP.NET のバージョンによって HTTP モジュール(FormsAuthenticationModule と UrlAuthorization)の削除・登録の要不要が違ってくるようです。ASP.NET 3.5 以下では必要、ASP.NET 4 では不要のはずです。

    #そういうこともあるので環境を書くようお願いしています。

    2014年10月24日 2:30