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

更新 : 2007 年 11 月

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

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

アプリケーション間でフォーム認証を構成するには、Web.config ファイルの forms セクションと machineKey セクションの属性を、共有されているフォーム認証に参加するすべてのアプリケーションで同じ値に設定します。

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

eb0zx8fc.alert_note(ja-jp,VS.90).gifメモ :

各 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 の最初の有効期限を使用して、新しい有効期限が計算されます。構成の Timeout 値が使用されるのは、Cookie が最初に作成されるときだけです。

フォーム認証と認証サービス

認証サービスを使用して、アプリケーション間でユーザーを認証することもできます。認証サービスを使用すると、SOAP 形式でメッセージを送信および処理できる任意のアプリケーションからフォーム認証を使用できます。詳細については、「Windows Communication Foundation の認証サービスの概要」を参照してください。

参照

処理手順

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

その他の技術情報

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