次の方法で共有


ASP.NET の偽装と IIS 認証の使用

更新 : 2007 年 11 月

インターネット インフォメーション サービス (IIS) には、Web アプリケーションを保護するための認証スキームがいくつかあります。一般的なシナリオとしては、企業イントラネットで統合 Windows 認証 (NTLM) を使用し、Windows ログイン情報に基づいてアプリケーション ユーザーの ID を特定すること、または特定のアプリケーションに単一の匿名 ID を指定することがあります。次に、IIS が提供する Windows ID を使用して、Web アプリケーションが保護された Windows リソースにアクセスするかどうかを判定します。このようなリソースには、アクセス制御リスト (ACL: Access Control List) を使用して保護されたファイルまたはファイル サーバー、データベース サーバーなどのネットワーク リソースなどがあります。偽装を使用すると、IIS が提供する Windows ID を使用するように ASP.NET を構成できます。

既定では、ASP.NET は Windows 認証モードを使用するように構成され、このモードでは、IIS が提供する Windows ID を現在の HttpContext オブジェクトの User プロパティに適用します。これによって、User プロパティ (匿名 ID を使用する場合、ユーザーの Name は空白です) を使用して IIS が提供する ID を特定できますが、提供された ID は現在のページの WindowsIdentity としては使用されません。アプリケーションが特定のファイル リソースまたはネットワーク リソースにアクセスできるかどうかを判定するには、アプリケーションの WindowsIdentity が使用されます。

IIS が提供する Windows ID を ASP.NET アプリケーションの WindowsIdentity として偽装するように ASP.NET を構成するには、次の例のように、アプリケーションの Web.config ファイルを編集し、identity 構成要素の impersonate 属性を true に設定します。

<configuration>
  <system.web>
    <identity impersonate="true" />
  </system.web>
</configuration>

偽装は、authentication 構成要素を使用して構成される認証 mode から独立しています。この認証要素は、現在の HttpContextUser プロパティを決定するために使用します。偽装は、ASP.NET アプリケーションの WindowsIdentity を決定するために使用します。

ここでは、イントラネット シナリオの例を使用して偽装を有効にする方法について説明します。このシナリオでは、社内の Web サイトでアプリケーションをセットアップして、従業員情報を掲示できるようにします。ただし、情報の一部は管理職専用です。管理職に関する情報は従業員情報のサイトのサブディレクトリに投稿し、これらの情報へのアクセスを制限できるようにします。IIS は、統合 Windows (NTLM) セキュリティを使用してユーザー ID を特定します。このシナリオでは、次のことを前提にしています。

  • Web サーバーに Microsoft Windows NT Server、Windows 2000 Server、または Windows Server 2003 のオペレーティング システムがインストールされています。

  • Web サーバーに IIS 6.0 がインストールされています。

  • Web サーバーのハード ディスクは NTFS でフォーマットされています。

  • 制限されたリソースにアクセスする必要があるすべての従業員は Windows を使用しています。

このシナリオのアプリケーションの管理者は、次の内容を実行する必要があります。

  1. 次の図に示すファイルおよびディレクトリを作成します。

    134ec8tc.directories(ja-jp,VS.90).gif

  2. ManagerInfo.aspx ファイルへのアクセス権を必要とするすべてのユーザーを含む Managers という名前の Windows グループを作成します。

  3. インターネット インフォメーション サービス (IIS) マネージャを使用してアプリケーションの匿名認証を無効にし、統合 Windows 認証を有効にします。

  4. アプリケーションの Web.config ファイルで、impersonate 要素の identity 属性を true に設定します。

  5. ManagerInformation ディレクトリの NTFS アクセス制御リスト (ACL) を、Windows の Manager グループに含まれている ID および必要なシステム アカウントに対してだけアクセスを許可するように設定します。ASP.NET プロセス ID を含める必要があります。Windows 2000 Server または Windows NT 用の ASP.NET プロセス ID は、ローカルの ASPNET アカウントです。Windows Server 2003 以降の ASP.NET プロセス ID は、IIS アプリケーション プールの ID で、既定では NETWORK SERVICE アカウントです。

    134ec8tc.alert_note(ja-jp,VS.90).gifメモ :

    ASP.NET のロール管理機能には、Web アプリケーションの領域へのアクセスを制限する代わりの方法が用意されています。詳細については、「ロールを使用した承認の管理」を参照してください。

参照

概念

Web アプリケーションのセキュリティに関する基本的な対策

その他の技術情報

ASP.NET Web アプリケーションのセキュリティ