web-dev-qa-db-ja.com

Windows認証を使用してASP.NETアプリのサブフォルダーで認証を無効にする

Windows認証を使用してASP.netアプリケーションの1つ以上のサブフォルダーでWindows認証を無効にすることは可能ですか?

例えば:

Webサイトには、アプリケーション全体の一部を含む他のいくつかのフォルダーが含まれています:/ frontend、/ backend、/ login

Binフォルダーは、これらのサブフォルダーと同じレベル、つまりWebサイトのルートにあります。

これらのサブフォルダーにはすべて、Webサイトのルートのbinフォルダーにあるバイナリを使用するページが含まれています。

ユーザーは、バックエンドフォルダーのページにアクセスするときにWindows資格情報を入力する必要がありますが、ログインフォルダーまたはフロントエンドフォルダーのページにアクセスするときは入力しないでください。

IIS7を使用しています

何か案は?

3
Bert Vandamme

解決策を見つけました:

  • ApplicationHost.configファイルを調整し、anonymousAuthentication enwindowsAuthenticationセクションエントリの「overrideModeDefault」を「Allow」に変更しました

       <section name="anonymousAuthentication" overrideModeDefault="Allow" />
       <section name="windowsAuthentication" overrideModeDefault="Allow" />
    
  • Windows認証から除外する必要のあるすべてのフォルダー/ファイルのロケーションタグをweb.configに追加しました

       <location path="pathToDirOrFile">
         <system.webServer>
           <security>
            <authentication>
             <anonymousAuthentication enabled="true" />
             <windowsAuthentication enabled="false" />
            </authentication>
           </security>
          </system.webServer>
       </location>
    
  • これらのフォルダーのそれぞれに、IDの偽装を無効にする個別のweb.configファイルが含まれていることを確認してください

       <configuration>
        <system.web>
         <identity impersonate="false" />
        </system.web>
       </configuration>
    
8
Bert Vandamme

Web.configのlocationタグを使用して認証を制御するか、適用する必要のある設定を指定して、関連するサブフォルダーに別のweb.configを配置することができます。

IIS内のリソース(フォルダーまたは個々のファイル)へのアクセスを制御することもできます。したがって、競合するルールが設定されていないことを確認する必要があります。

1
Chris W