ASP.NET machineKeyの役割と使い方
3145 ワード
ASP.NET machineKeyの役割
もしあなたのAspがNetプログラムの実行中にこのエラーが発生しました.「ビューステータスMACの検証に失敗しました.このアプリケーションがネットワークフィールドまたはクラスタによってベアラされている場合は、構成が同じvalidationKeyと検証アルゴリズムを指定していることを確認してください.クラスタ内でAutoGenerateを使用することはできません.」では、アプリケーションに統一されたmachineKeyを使用させなかったことを説明します.machineKeyの役割は何ですか.MSDNの基準に従って、「鍵を構成し、Forms認証Cookieデータとビューステータスデータの暗号化と復号化に使用し、プロセス外セッションステータスIDの検証に使用します.」つまりAsp.Netの多くの暗号化は、Forms認証Cookie、View Stateの暗号化など、machineKeyの値に依存しています.デフォルトではAsp.Netの構成は自分で動的に生成するものであり、1台のサーバであればもちろん問題ないが、複数台のサーバの負荷が均等であれば、machineKeyは動的に生成する方式を採用しており、各サーバのmachinekey値が一致しないと暗号化された結果も一致せず、検証とViewStateを共有できないため、複数台のサーバの負荷が均等である場合、必ず各サイトに同じmachineKeyを配置してください.
ASP.NET machineKeyが生成するアルゴリズム:
もしあなたのAspがNetプログラムの実行中にこのエラーが発生しました.「ビューステータスMACの検証に失敗しました.このアプリケーションがネットワークフィールドまたはクラスタによってベアラされている場合は、
ASP.NET machineKeyが生成するアルゴリズム:
- validationKey = CreateKey(20);
-
- decryptionKey = CreateKey(24);
-
- protected string CreateKey(int len)
-
- {
-
- byte[] bytes = new byte[len];
-
- new RNGCryptoServiceProvider().GetBytes(bytes);
-
- StringBuilder sb = new StringBuilder();
-
- for(int i = 0; i < bytes.Length; i++)
-
- {
-
- sb.Append(string.Format("{0:X2}",bytes[i]));
-
- }
-
- return sb.ToString();
-
- }
ASP.NET machineKey :
<?xml version="1.0"?>
<configuration>
<system.web>
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
</system.web>
</configuration>
:http://developer.51cto.com/art/200908/145676.htm