認証を委任する場合の ASP.NET アプリケーションの構成方法


概要


この資料では、ASP.NET アプリケーションの委任に必要な、インターネット インフォメーション サービス (IIS) および Active Directory の構成方法について手順を追って説明します。 委任は偽装の次のステップです。 委任により、ローカル リソースに限定されずに、クライアントに代わってリモート リソースにアクセスできます。 この資料では、ASP.NET と連携するアプリケーションを委任するために必要な手順について説明します。

先頭に戻る

委任に関する要件

委任では、統合 Windows 認証に基づいてリソースにアクセスします。 アカウントを委任できるコンピュータの数に制限はありません。各コンピュータを正しく構成する必要があります。 統合 Windows 認証は、次の 2 つの条件を満たしている場合にのみ正常に機能します。
  • Active Directory を必要とする Kerberos 認証プロトコルを使用するように、ネットワークを設定しています。
  • ネットワーク上のコンピュータとアカウントを、委任に対して信頼されるように設定しています。
これらの条件に該当しない場合、統合 Windows 認証を使用してリモート リソースのデータにアクセスすることはできません。これは、統合 Windows 認証では IIS サーバーへのアクセスのみがユーザーに許可され、Windows 認証用に構成された、IIS サーバーがリモートからアクセスする追加リソースへのアクセスは許可されないためです。

Kerberos 認証ではサーバーとクライアントが認証されますが、Windows NT チャレンジ/レスポンス (NTLM) 認証ではクライアントのみが認証されます。 Windows 2000 より前のオペレーティング システムでは Kerberos 認証はサポートされていません。 Kerberos では、IIS 5.0 以降のバージョンを使用する必要があります。 したがって、Kerberos 委任を使用する場合、すべてのコンピュータで Windows 2000 またはそれより新しいオペレーティング システムが実行されている必要があります。 また、すべてのコンピュータを同じ Active Directory フォレスト内に配置する必要があります。 Kerberos は Microsoft Internet Explorer 5.0 およびそれ以降のバージョンでのみサポートされています。
詳細については、以下のサポート技術情報番号をクリックしてください。

217098 Windows 2000 での Kerberos ユーザー認証プロトコルの基本的な概要


先頭に戻る

委任するための Internet Explorer の構成方法

Internet Explorer 5.0 以降のバージョンを使用している場合、ASP.NET と IIS の間の委任が行えるように Internet Explorer を構成できます。 これを行うには、次の手順を実行します。
  1. Internet Explorer を起動します。 メニュー バーで、
    [ツール]、[インターネット オプション] の順にクリックします。
  2. [詳細設定] タブをクリックし、[統合 Windows 認証を使用する (再起動が必要)] チェック ボックスをオンにします。

    この設定により、Internet Explorer は Negotiate チャレンジに応答して、Kerberos 認証を実行します。 この機能では Windows 2000 以降のバージョンが必要であるため、Internet Explorer が実行されているのが Windows 2000 以降のバージョンのオペレーティング システムでない場合、Internet Explorer は Negotiate チャレンジに応答しません。 [統合 Windows 認証を使用する (再起動が必要)] チェック ボックスをオンにしても、Internet Explorer ではデフォルトで NTLM 認証が使用されます。

    重要: このセクション、方法、またはタスクには、レジストリの変更方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 万一に備えて、編集の前にレジストリをバックアップしてください。 問題が発生した場合でも、レジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。
    322756 Windows でレジストリをバックアップおよび復元する方法

  3. 注: Microsoft Windows 2000 以降のバージョンを実行しているコンピュータの管理者は、以下のレジストリ キーの EnableNegotiate の値 (REG_DWORD エントリ) を 1 に設定することで、統合 Windows 認証を有効にすることができます。
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    .
  4. Internet Explorer クライアントで Kerberos が失敗するケースがあります。
    Kerberos 認証に関連する問題を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

    321728 Internet Explorer でプロキシ サーバーを使用した Kerberos 認証がサポートされない

    325608 負荷分散アーキテクチャで Kerberos を使用した認証の委任が機能しない

    248350 IIS 4.0 から IIS 5.0 にアップグレードした後、Kerberos 認証が失敗する

    264921 IIS におけるブラウザー クライアントの認証方法

先頭に戻る

委任するための IIS の構成方法

ASP.NET アプリケーション用に統合 Windows 認証および偽装を有効にするには、インターネット インフォメーション サービス (IIS) を構成する必要があります。 IIS で Windows 認証を構成するには、以下の手順を実行します。
  1. [スタート]、
    [ファイル名を指定して実行] の順にクリックします。次に、
    inetmgr」と入力し、[OK] をクリックします。
  2. [ローカル コンピュータ] を展開し、
    [Web サイト] を展開します。
  3. [既定の Web サイト] を右クリックして [プロパティ] をクリックします。
  4. [ディレクトリ セキュリティ] タブをクリックし、[匿名アクセスおよび認証コントロール] の [編集] をクリックします。
  5. [統合 Windows 認証] チェック ボックスをオンにし、[匿名アクセス]、[Windows ドメイン サーバーでダイジェスト認証を使用する]、[基本認証] の各チェック ボックスをオフにします。

    注: 匿名認証が有効になっていると、他の方法が有効な場合でも、IIS では常に匿名認証を使用した認証の試行が行われます。


    匿名認証、統合 Windows 認証、基本認証がすべて選択されている場合、優先順位は、匿名認証、統合 Windows 認証、基本認証の順になります。
先頭に戻る

委任するための ASP.NET の構成方法

  1. メモ帳などのテキスト エディタで Web.config ファイルを開きます。 Web.config ファイルは Web アプリケーションのフォルダにあります。
  2. Web.config ファイルで、<configuration> セクションの次の情報を見つけます。
    <allow users="*" /> 
    <deny users="?" />
  3. <System.web> セクションで、次のように認証要素に Windows が設定されていることを確認します。
    <authentication mode="Windows" />
  4. <System.web> セクションで、偽装用に次の要素を追加します。
    <identity impersonate="true" />
  5. 関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

    306158 ASP.NET アプリケーションに偽装を実装する方法

    317012 ASP.NET のプロセス ID と要求 ID

    315736 Windows セキュリティを使用して ASP.NET アプリケーションをセキュリティで保護する方法

先頭に戻る

委任するための Active Directory の構成方法

委任の資格情報を持つすべてのコンピュータで委任を有効にする必要があります。 委任は Active Directory ツールで構成できます。

詳細については、次のマイクロソフト Web サイトを参照してください。 IIS のコア プロセスである InetInfo.exe は LocalSystem アカウントで実行されるサービスで、以下の処理を行うプロセスです。
  • クライアント要求を取得する。
  • ユーザーを偽装する。
  • 適切なタスクを実行する。
  • プロセス ID を元に戻す。 これは LocalSystem です。
LocalSystem 以外のアカウントで InetInfo.exe を実行している場合、そのアカウントにタスクを委任実行する許可があるかどうかを確認する必要があります。 この場合、コンピュータを委任用に構成しないでください。
先頭に戻る

トラブルシューティング

  1. ASP.NET ページを呼び出すために URL で使用する Web サーバー名が IIS コンピュータの NetBIOS 名と異なる場合、統合認証はエラー 401.3 で失敗することがあります。 この問題を解決するには、コンピュータの新しいサービス プリンシパル名を SetSPN.exe ユーティリティで登録します。
    詳細については、以下のサポート技術情報番号をクリックしてください。

    294382 Web サイトのホスト ヘッダーがサーバーの NetBIOS 名と異なると、"401.3" エラーが発生して認証に失敗することがある

  2. Kerberos は負荷分散アーキテクチャでは機能せず、IIS で使用される認証方法は NTLM 認証に戻ります。 NTLM は委任では使用できないため、委任を必要とするアプリケーションまたはサービスは正常に動作しません。
    詳細については、以下のサポート技術情報番号をクリックしてください。

    325608 負荷分散アーキテクチャで Kerberos を使用した認証の委任が機能しない

  3. Kerberos が正常に機能するためには、すべての通信で完全修飾ドメイン名 (FQDN) を使用する必要があります。
  4. Internet Explorer を Windows 2000 クライアント上で使用しているとき、ホスト ヘッダー名がコンピュータの NetBIOS 名と異なる Web サイトにアクセスすると、統合認証はエラー 401.3 で失敗することがあります。 Windows NT 4、Windows 98、または Windows 95 上の Internet Explorer クライアントは失敗しません。 また、他の認証方法では正常に機能します。
  5. Web サーバーで完全修飾ドメイン名が使用されている場合、Internet Explorer でイントラネット サイトの一覧にサイトを追加する必要があります。 Web サーバーで完全修飾ドメイン名が使用されていることを確認するには、以下の手順を実行します。
    1. Internet Explorer を起動します。
    2. [ツール] メニューの
      [インターネット オプション] をクリックし、[セキュリティ] タブをクリックします。
    3. [イントラネット] をクリックします。 [
      サイト] をクリックします。
    4. [詳細設定] をクリックし、[次の Web サイトをゾーンに追加する] ダイアログ ボックスに Web アドレスを入力します。 [追加] をクリックして [OK] をクリックします。
  6. Internet Explorer クライアントがプロキシ サーバーを使用するように設定されている場合、[ローカル アドレスにはプロキシ サーバーを使用しない] チェック ボックスをオンにする必要があります。 Internet Explorer クライアントがプロキシ サーバーを使用するように設定されているかどうかを確認するには、以下の手順を実行します。
    1. Internet Explorer を起動します。
    2. [ツール] メニューの
      [インターネット オプション] をクリックし、
      [接続] タブをクリックします。
    3. [LAN の設定] をクリックします。 [プロキシ サーバー] で、[ローカル アドレスにはプロキシ サーバーを使用しない] チェック ボックスがオンになっていることを確認します。
  7. ASP.NET アプリケーションから SQL Server にアクセスするには、TCP/IP を使用する必要があります。 名前付きパイプは Kerberos 委任をサポートしていません。 名前付きパイプでサポートされているのは、NTLM のみです。 これを行うには、次の属性を接続文字列に追加します。
    "Network Library =dbmssocn"
    ネットワーク ライブラリを明示的に指定しないと、NTLM ではクライアント構成ユーティリティ (Cliconfg.exe) の最初のライブラリ セットアップが使用されます。 このデフォルト値は Microsoft Data Access Components (MDAC) 2.6 で名前付きパイプから TCP/IP に変更されました。
    関連情報を参照するには、以下のサポート技術情報番号をクリックしてください。

    315159 [BUG] ワーカー プロセスが ASPNET アカウントで実行されていると名前付きパイプが機能しない

    247931 Active Server Pages で SQL Server に接続するための認証方法

先頭に戻る

関連情報


より高度にセキュリティ保護された Web ベースのアプリケーションおよび委任シナリオを設計する方法については、以下の MSDN (Microsoft Developer Network) Web サイトを参照してください。 セキュリティ保護された Web ベースのアプリケーションを設計する方法については、以下の資料を参照してください。
『Designing Secure Web-Based Applications』
Microsoft Press
Michael Howard, Marc Levy, and Richard Waymire
ISBN 0-7356-0995-0
先頭に戻る