IIS Insider

2004 年 8 月

IIS Insider

Internet Information Services に関してよく寄せられる質問と答え

By Brett Hill

トピック

IIS Server 6 で、NTLM 認証を強制的に行うにはどのようにしたらよいですか?
キャッシュを無効に設定するにはどのようにしたらよいですか?
別のサーバーで仮想ディレクトリをセットアップするにはどのようにしたらよいですか?

IIS Server 6 で、NTLM 認証を強制的に行うにはどのようにしたらよいですか?

que

IIS 6 サーバーを実行していますが、統合 Windows 認証が実行できません。これは、Windows Server 2003 では Kerberos v5 が使用されているためだと思われます。Windows 2000 Server 上の IIS5 への統合Windows 認証は、ファイアウォールの背後にあるクライアントからは問題なく実行されます。Windows Server 2003/IIS6 で強制的に Windows 2000 Server と同じ認証方法 (NTLM?) を使用し、ファイアウォールの背後にあるクライアントで認証が行われるようにする方法はありますか?

ans

IIS 6 および IIS 5 上では、統合 Windows 認証は同じ方法で実行されます。そのため、この問題は NTLM vs Kerberos の問題に関連しないと思います。しかし、この件を NTLM vs Kerberos の問題であると考え、トラブルシューティングを行う際、潜在的な問題を解決できる可能性があります。まず、Kerberos の部分の相関関係に関して考えてみましょう。

IIS では、次の条件のすべてが満たされる場合にのみ Kerberos による認証が試行されます。

  1. 統合 Windows 認証が有効に設定されている場合

  2. IIS が Active Directory ドメインのメンバである場合

  3. Web サイトが Kerberos でサービス プリンシパル名 (SPN) として登録されている場合

  4. クライアントが信頼するドメインのメンバである場合

  5. クライアントが Kerberos が有効にされたブラウザまたは OS を使用している場合

Kerberos での認証に失敗する原因となる最も一般的なものの 1 つは、Web サイトの名前が SPN として登録されていない場合に起こります。これは、URL で使用される Web サイト名がコンピュータの NetBIOS 名以外である場合、起こります。この場合、Setspn.exe ツールを使用して、Web サイト名を Kerberos でサービス プリンシパルとして登録する必要があります。Web サイトでコンピュータの NetBIOS 名に応答するように構成し、このテストを行うことができます。Active Directory を持つイントラネット上では、単にすべての未使用の IP アドレスまたはサーバー名の接続を確認する際に返された IP アドレスに応答するように Web サイトを設定することにより、このテストを行うことができます。認証が成功したら、Kerberos の問題の原因を突き止めることができます。

この件に関する詳細は、他の懸念事項もあるため、統合 Windows 認証の IIS Resource Guide (英語) のセクションをご覧ください。

また、IIS で、Kerberos のネゴシエーションを省略し、直接 NTLM 認証を行うように構成することができます。これを行うためには、Metabase キーの “NtAuthenticationProviders" を “NTLM” に設定します。このキーは、IIS 5、5.1、6.0 のサイト レベルで設定することができます。この変更を記録しておくことは非常に重要です。その後、Kerberos を再度有効に設定する必要がある場合、ユーザー インターフェイスで確認することができないため、なぜ、Kerberos が有効になっていないのかわからない状況が出てきます。

Kerberos を無効に設定し、認証が実行される場合、何らかの問題が発生することが予測されます。認証が依然として失敗する場合、クライアントおよびサーバーが、以下のようにローカル セキュリティ ポリシーで同じ NTLM 認証が行われるようにしてください。

Local Security Policies

クライアントを図のように設定し、IIS を “NTLM v2 only refuse all others” に設定した場合、認証は失敗します。これは、IIS の既定の設定ではありませんが、グループ ポリシーまたはセキュリティ テンプレートで変更することができます。

また、IIS サーバーの前にプロキシ サーバーを使用している場合、統合 Windows 認証が失敗する可能性があります。ISA サーバーには NTLM プロキシ機能があるため、利用することができますが、ほとんどの場合において、統合 Windows 認証を使用して IIS サーバーの前でプロキシを使用することはできません。IIS および認証に関する詳細は、サポート技術情報 264921 IIS におけるブラウザ クライアントの認証方法 をご覧ください。

キャッシュを無効に設定するにはどのようにしたらよいですか?

que

我が社では、サーバーのアプリケーション マッピングで参照する ISAPI (Internet Server API) アプリケーションを開発しています。ISAPI が開始される際にキャッシュが行われるため、開発は少し困難です。そのため、ISAPI への変更を行い、コードの再コンパイルを行う際、キャッシュされたアプリケーションがアンロードされるように Web サイトを終了し、再起動する必要があります。[ISAPI アプリケーションをキャッシュする] というチェックボックスがあるので、そのチェックボックスをオフにし、ISAPI がキャッシュされないようにしたいのですが、そのチェックボックスは灰色表示されています。キャッシュを無効にするにはどのようにしたらよいですか?

ans

[ISAPI アプリケーションをキャッシュする] というチェックボックスは、以下のように、アプリケーション構成プロパティのページのアプリケーション マッピング タブにあります。このボックスは、Web サイトのアプリケーション マッピング タブから設定することができます。仮想ディレクトリまたはディレクトリのアプリケーション構成ウインドが表示された場合、そのチェックボックスは設定できません。これは、回避策がある IIS 5.0 の問題により発生します。詳細は、以下のマイクロソフト サポート技術情報をご覧ください。「キャッシュ ISAPI アプリケーション」プロパティは変更できません。

Application Configuration property page

[ISAPI アプリケーションをキャッシュする] に関連するメタベースのプロパティは、メタベースの CacheISAPI プロパティとなります。Metaedit 2.2 により、または adsutil.vbs スクリプトを使用してこのプロパティを有効または無効に設定することができます。たとえば、ISAPI アプリケーションのキャッシュを無効に設定するには、以下のようにコマンド プロンプトから adsutil を使用します。

X:\inetpub\adminscripts cscript.exe adsutil.vbs set w3svc/<siteid>/root/foldername/cacheisapi 0

上記の例で、X は、使用しているドライブを示し、<siteid> は、Web サイトのサイト番号、foldername は、キャッシュを行う必要のない ISAPI アプリケーションのフォルダ名を表します。

キャッシュを再び有効にするには、最後の 0 を 1 に変更し、同じコマンドを実行してください。

別のサーバーで仮想ディレクトリをセットアップするにはどのようにしたらよいですか?

que

別の W2K サーバー上のディレクトリに接続する IIS サーバー上の仮想ディレクトリをセットアップする必要があります。問題は、使用している IIS サーバーが TCP - http、https および ftp ポートのみが有効にされているファイアウォールの背後の DMZ に配置されていることです。仮想ディレクトリは、UNC パスで Microsoft ネットワークを使用するように設定されるようです。これを変更することはできますか?

ans

仮想ディレクトリは、おっしゃるように UNC パスを使用してリモートの共有に接続するか、または http:// のリクエストをリダイレクトします。異なるサーバーにリダイレクトを行う場合、ユーザーのセッションはリモート システムにリダイレクトされ、リダイレクトを行った IIS サーバーではなく、そのコンピュータから配布されます。IIS サーバーがリモートの IIS サーバーからコンテンツをフェッチし、コンテンツをクライアントに配信する必要がある場合、最初の IIS サーバーがリモートの IIS サーバーのリバース プロキシのような役割を果たします。リバースプロキシの「ような」とは、リバース プロキシ サーバーは、一般的には Web サイト全体の接続の代理の役割をするためです。この場合、Web サイト全体ではなく、一部のフォルダ上でのみそれが行われるようにする必要があります。

これは、多くの方法にて行うことができますが、すべての方法において、アプリケーションの開発または専用のコンポーネントの使用が必要となります。たとえば、Log Parser Tool 2.2 ベータ版 (TechNet ダウンロード CD 2004 年 8 月号にて利用可能です) には、Log Parser Tool の機能を実装する COM オブジェクトが同梱されています。それらの機能のうちの 1 つにより、http を使用して対象のサーバーのクエリを行うことができます。その後、その結果をクライアントで再現することができます。Log Parser Tool の最終リリース版の 2.2 は、2004 年の夏ごろにリリースされる予定です。

同じ目標を達成する方法はこのほかに多くあります。対象のサーバー上のコンテンツを XML にフォーマットすることができる場合、アプリケーションの一部として XML コンテンツを挿入し、クライアントにそのコンテンツを配信することができます。これは、スクリプトで MSXML オブジェクトを使用して行うことができる場合があります。このオブジェクトの主な機能は、アプリケーション内から XML ファイルと連携を行うことですが、リモートの IIS サーバーから html などのほかのファイルを読み込む機能もあります。

そのほかの潜在的な機能として、net use * http://targetserver/foldername などのドライブ マッピングを使用して、対象のサーバーにマッピングされた Web フォルダの使用があります。この場合、WebClient サービスを有効にする必要があるため、ソース サーバーとして IIS 6 を使用することが必要となります。対象のサーバーでは、WebDAV を有効に設定する必要があります。

そのほか、サード パーティのオブジェクトおよびアプリケーションにより、IIS サーバーから http のコンテンツをフェッチできる可能性があります。研究および創造的な考え方により、問題のソリューションを行うことができます。

関連情報

これまでの IIS Insider コラムの質問と答えの一覧は、ここをクリック してください。