アプリケーション間のフォーム認証
ASP.NET は、1 つのサーバー上または Web ファーム内のアプリケーション間における分散環境でのフォーム認証をサポートします。フォーム認証を複数の ASP.NET アプリケーション間で有効にすると、ユーザーはアプリケーションを切り替える際に再認証を受ける必要がなくなります。
アプリケーション間のフォーム認証の構成
アプリケーション間でフォーム認証を構成するには、共有されているフォーム認証に参加するすべてのアプリケーションで値が同じになるように、forms 構成セクションと machineKey 構成セクションに属性をいくつか設定します。
Web.config ファイルの Authentication セクションを次の例に示します。別の記述がない限り、name、protection、path、validationKey、validation、decryptionKey、および decryption の各属性は、すべてのアプリケーションで同じにする必要があります。同様に、Cookie データに使用される暗号キーと検証キー、および暗号化スキームと検証スキームは、厳密に一致する必要があります。設定が一致しないと、Cookie を共有できません。
![]() |
---|
各 ASP.NET Version 2.0 アプリケーションの machineKey 要素に |
<configuration>
<system.web>
<authentication mode="Forms" >
<!-- The name, protection, and path attributes must match
exactly in each Web.config file. -->
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH"
protection="All"
path="/"
timeout="30" />
</authentication>
<!-- Validation and decryption keys must exactly match and cannot
be set to "AutoGenerate". The validation and decryption
algorithms must also be the same. -->
<machineKey
validationKey="[your key here]"
decryptionKey="[your key here]"
validation="SHA1" />
</system.web>
</configuration>
Cookie が発行された後は、Cookie 自身に含まれる Expires の値を使用して、Cookie の有効期限が追跡されます。これは、2 つのアプリケーションの Timeout 属性が異なる場合は、それぞれの Cookie が最初に発行されたときに設定された有効期限の日時が Cookie の有効期限全体をとおして維持されることを意味します。Cookie が更新されるときは、Cookie の最初の有効期限を使用して、新しい有効期限が計算されます。構成の Timeout 値が使用されるのは、Cookie が最初に作成されるときだけです。