FC2ブログ

記事一覧

フォーム認証チケットを複数のサイトで共有する方法 | asp.net


今回は asp.net においてフォーム認証チケットを複数のサーバーの複数の Web サイトで共有する方法についてご紹介したいと思います。
単純にフォーム認証を実装して、フォーム認証の name 属性を同じにしても複数のサーバーで複数の Web サイト(仮想ディレクトリ)では別の認証と識別されます。コンピューターキーを生成して利用することで複数のサーバーでフォーム認証チケットを
共通して暗号化・検証することが必要でした。


前提条件
・Windows 7 Professional 以降 / Windows Server 2008 R2 以降
・Visual Studio 2010 Professional 以降
・VB.NET
・.Net Framework 4.0 以降



1.コンピューターキー

IIS マネージャーからコンピューターキーを固定することで複数サーバー内のサイトでフォーム認証を共有することができるようになります。

(1)まず、デフォルトではコンピューターキーが IIS マネージャーに表示されていないので、以下の手順で追加します。

コントロールパネル > プログラムと機能 > Windows の機能の有効化または無効化
からセキュリティと asp.net の機能を有効にします。

aspnet_formsauth_01.png


(2)次に IIS マネージャーを開き、該当のサーバーを選択して、コンピューターキーを開きます。

aspnet_formsauth_02.png


(3)以下の通り設定を行います。
検証方法 :SHA1
暗号化方法:AES
検証キー :実行時に自動的に生成するのチェックを外します。
復号化キー:実行時に自動的に生成するのチェックを外します。

aspnet_formsauth_03.png


(4)「キーの生成」から検証キーと復号化キーを生成します。
※キーの生成を押下する度にキーが変更されますので注意が必要です。

(5)「適用」ボタンを押下し、設定を確定します。



2.フォーム認証の実装

次にフォーム認証を実装します。マイクロソフトの公式サイトにも載っていますし、以前の記事「セッションハイジャック対策がされているか確認する方法」でもご紹介しておりますので、詳細については割愛しますので、リンクをご参考ください。

フォーム認証を実装した Web.config に先ほど生成したコンピューターキーを埋め込みます。

aspnet_formsauth_04.png

Web.config
<configuration>
  <system.web>
    <authentication mode="Forms">
   <forms loginUrl="logon.aspx"
               name=".ASPXFORMSAUTH"
               protection="ALL"/> <!--protection=Allで暗号化・検証を行うように設定します。-->
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
<!--以下に生成したコンピューターキーを埋め込みます。-->
    <machineKey decryption="AES"
                validation="SHA1"
                decryptionKey="D99417F149FBA04CD4DBAA1B4C7C25EFE0"
                validationKey="5D1EF5F9AA82F8064320B2E4" />
  </system.web>
</configuration>


上記設定を共有したいサーバーやサイトに対して同じキーを埋め込みます。
以上で複数サーバーの複数のサイト間でフォーム認証が共有できるようになります。






最後までお読みいただきありがとうございます。
いかがでしたでしょうか。他にも asp.net に関連する記事を投稿しておりますのでよろしければご参考くださいませ。




関連記事

コメント

コメントの投稿

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語・データベース】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
Oracle10g SQLServer2008R2 SQLAnywhere8/11/16
ActiveReport CrystalReport ReportNet(IBM)
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。