概要
セキュリティ更新プログラム 2638420 (セキュリティ情報 MS11-100 に記載) は、ASP.NET がフォーム認証チケットを作成する方法を変更します。 新しい動作は、前の動作と互換性がありません。 新しい動作を使用して生成されたチケットは、以前の動作を使用するサーバーで読み取ることができず、その逆も同様です。 そのため、フォーム認証を使用するアプリケーションを使用している場合は、セキュリティ更新プログラム 2638420 を展開するときに特定の手順を実行して、すべてのサーバーで新しい動作が同時に使用されるようにする必要があります。
展開ガイダンス
チケットの動作の変更により、フォーム認証を使用するアプリケーションを持つ管理者は、セキュリティ更新プログラム 2638420 を展開するときに特定の手順を実行して、すべてのサーバーが同時に新しい動作に切り替わるようにする必要があります。
アプリケーションでフォーム認証が使用されているかどうかを判断するには、System.web ファイルを調べます。 フォーム認証を使用するアプリケーションは、System.web ファイルの次のエントリを使用します。
<認証モード="フォーム">注
- 既定の認証モードは "Windows" です。
- ASP.NET では、フォーム認証が明示的に構成されている場合にのみ使用されます。
フォーム認証を使用するアプリケーションを使用している場合は、Web サイトが引き続き正常に動作するように、次のいずれかの方法を使用してセキュリティ更新プログラム 2638420を展開する必要があります。
方法 1
ASP.NET Web ファーム内のすべてのアクティブなサーバーに、セキュリティ更新プログラム 2638420 を同時に展開します。 手順は次のとおりです。
- ロード バランサーのローテーションから Web ファーム内のサーバーの半分を削除します。
- これらのサーバーに更新プログラムをインストールします。
- サーバーをローテーションに戻し、同時に残りのサーバーをオフラインにして更新します。
方法 2
セキュリティ更新プログラム 2638420 を Web ファーム内のすべてのサーバーに同時に展開できない場合は、代わりにこの方法を使用します。
注: この方法は推奨されません。 このスイッチを設定すると、Web ファーム内の一部のサーバーにセキュリティ更新プログラムをインストールしても、以前の動作を使用して引き続き機能することができます。 ただし、この構成スイッチを使用するサーバーはセキュリティで保護されていない状態になり、セキュリティ更新プログラムのすべての修正プログラムの恩恵を受けることはできません。 そのため、Web ファーム内のすべてのサーバーにセキュリティ更新プログラム 2638420 が展開されるとすぐに、新しいセキュアな動作を有効にするために構成スイッチを削除する必要があります。
セキュリティ更新プログラム 2638420 をインストールする前に、Web.config または Machine.config ファイルで互換性スイッチを設定し、更新プログラムのインストール時に以前の動作を強制します。 手順は次のとおりです。
メモ帳などのテキスト エディターを使用して、Web.config ファイルまたは Machine.config ファイルを開きます。
次のテキストをファイルに追加して保存します。
<appSettings>
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
</appSettings>更新後にコンピューターまたはサービスを再起動し、Web.config または Machine.config ファイルを保存した後は、再起動する必要はありません。 構成変更通知により、アプリケーション プールが自動的に循環します。
Web.config ファイルは、次の場所にあります。
.NET Framework バージョン 4.0 から 4.5
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Web.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\Web.config .NET Framework バージョン 2.0 – 3.5 SP1
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Web.config 32 ビット コンピューターでは、Framework フォルダーのみが存在します。 64 ビット コンピューターでは、Framework フォルダーと Framework64 フォルダーの両方が存在します。 そのため、32 ビット版と 64 ビット版の両方のアプリケーション プールで CLR 2 + CLR 4 を同時に実行している場合は、これら 4 つのファイルすべてにエントリを追加する必要があります。
これらの構成ファイルに <appSettings> エントリも追加すると、変更はシステム全体に適用されます。
既知の問題
セキュリティ更新プログラム 2638420 のインストール後にチケットの復号化が失敗する
新しいチケットの動作を有効にすると、古い動作を使用して生成されたすべてのフォーム認証チケットが無効になります。 この問題が発生すると、エンド ユーザーはログオフされ、サーバー管理者はチケットの暗号化解除エラーが発生する可能性があります。
また、次のエラー メッセージがイベント ログに記録されます。
注
ログ名: アプリケーション
イベント ID: 1315
イベント コード: 4005
イベント メッセージ: 要求のフォーム認証に失敗しました。 理由: 提供されたチケットが無効でした。これらの障害により、予期しない動作が発生する場合があります。 たとえば、Web ページが <承認> 要素によって保護されている場合、"HTTP 401" または "HTTP 302" エラーが発生する可能性があります。
セキュリティ更新プログラム 2638420 をインストールした後、以前に生成されたチケットの有効期限が切れているため、管理者はこれらのチケット復号化エラーのいくつかを確認する可能性があります。 エラーの数と頻度は、新しいチケットが生成されるにつれて、時間の経過と共に減少します。 セキュリティ更新プログラムをインストールした後もかなりの期間、暗号化解除の失敗が続く場合は、Web ファーム内の一部のサーバーがまだ古いチケット動作を使用していることを示している可能性があります。 たとえば、次のいずれかに該当する場合、問題が発生する可能性があります。
- 1 つ以上のサーバーがセキュリティ更新プログラム 2638420 で更新されていません。
- 1 つ以上には、前述の互換性スイッチが設定されています。 互換性スイッチについては、この資料の前半で説明しました。
追加情報
TicketCompatibilityMode 構成スイッチはサポートされなくなりました
セキュリティ更新プログラム 2638420 はフォーム認証チケットの形式を変更するため、セキュリティ更新プログラム 2638420 がインストールされている場合、 <forms/ticketCompatibilityMode> 構成スイッチはサポートされなくなります。
<forms/ticketCompatibilityMode> 構成スイッチの詳細については、次の MSDN Web サイトを参照してください。