ASP.NET で開発をしていると、 web.config に machineKey を設定できます。 複数のサーバーにおいて、同じ認証結果を利用したい場合(DNSラウンドロビン等)、各サーバーにおいて共通の machineKey を設定することで、1度の認証で他のサーバーにアクセスできるようなことを実現できます。 この machineKey 、生成方法は MSDN に記載があるのですが、わざわざ作らないと machineKey を手に入れることができません。
…というわけで、machineKey を生成するツールを作ってみました。 暗号化/複合化および検証に対して任意の強度を選択して生成するだけの単純なものです。
ソースコード
バイナリ
アルゴリズムの選択
ビット数 が長いほど シノニム(キーの衝突) が発生しにくい & 強度が高い ですが、処理速度が遅くなります。 以下に、アルゴリズム と ビット数 を表にまとめます。
decription (暗号化/複合化)
ハッシュアルゴリズム | ビット数 | バイト数 | 16進の文字数 |
---|---|---|---|
Auto (=AES) (default) | 256 | 32 | 64 |
AES | 128 | 16 | 32 |
AES | 192 | 24 | 48 |
AES | 256 | 32 | 64 |
DES | 64 | 8 | 16 |
3DES | 192 | 24 | 48 |
validation (検証)
ハッシュアルゴリズム | ビット数 | バイト数 | 16進の文字数 |
---|---|---|---|
AES | 256 | 32 | 64 |
MD5 | 128 | 16 | 32 |
SHA1 | 160 | 20 | 40 |
3DES | 192 | 24 | 48 |
HMACSHA256 (default) | 256 | 32 | 64 |
HMACSHA384 | 384 | 48 | 96 |
HMACSHA512 | 512 | 64 | 128 |
今回、以下のサイトを参考にしました。
- MSDN - machineKey 要素 (ASP.NET 設定スキーマ)
- MSDN - How To: ASP.NET 2.0 で MachineKey を構成する方法
- しばやん雑記 - machineKey を生成する方法
- Microsoft サポート - Visual C# .NET を使用して、フォーム認証に使用するキーを作成する方法
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!