アプリケーション間のフォーム認証

ASP.NET は、1 つのサーバー上または Web ファーム内のアプリケーション間における分散環境でのフォーム認証をサポートします。フォーム認証を複数の ASP.NET アプリケーション間で有効にすると、ユーザーはアプリケーションを切り替える際に再認証を受ける必要がなくなります。

アプリケーション間のフォーム認証の構成

アプリケーション間でフォーム認証を構成するには、共有されているフォーム認証に参加するすべてのアプリケーションで値が同じになるように、forms 構成セクションと machineKey 構成セクションに属性をいくつか設定します。

Web.config ファイルの Authentication セクションを次の例に示します。別の記述がない限り、nameprotectionpathvalidationKeyvalidationdecryptionKey、および decryption の各属性は、すべてのアプリケーションで同じにする必要があります。同様に、Cookie データに使用される暗号キーと検証キー、および暗号化スキームと検証スキームは、厳密に一致する必要があります。設定が一致しないと、Cookie を共有できません。

Noteメモ :

各 ASP.NET Version 2.0 アプリケーションの machineKey 要素に decryption="3DES" を含めると、ASP.NET Version 2.0 を実行するアプリケーションは以前のバージョンの ASP.NET とフォーム認証チケット情報を共有できます。

<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 が最初に作成されるときだけです。

参照

処理手順

方法 : 簡単なフォーム認証を実装する

その他の技術情報

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