IIS でホストされている ASP.NET MVC 4 Web サイトのために、実行時にコードでマシン キーを動的に調整したいと考えています。
マシン キー、暗号化キー、検証キー、および使用するアルゴリズムは、データベースに格納されます。ファイルから値を読み取る代わりに、web.config
アプリケーションの起動時にそれらの値を挿入し、代わりにシステムにそれらの値を使用させたいと考えています。
まったく変更せずにそれを達成する方法はありますかweb.config
(インメモリ構成のみを変更するため)?
構成セクションにアクセスしようとしましたが、読み取り専用としてマークされており、封印されているため、オーバーライドできませんIsReadOnly()
。ただし、setter
読み取り専用フラグを潜在的に削除する方法がある可能性があることを示す指標があります。
var configSection = (MachineKeySection)ConfigurationManager.GetSection("system.web/machineKey");
if (!configSection.IsReadOnly())
{
configSection.ValidationKey = _platformInfo.MachineKey.ValidationKey;
configSection.DecryptionKey = _platformInfo.MachineKey.EncryptionKey;
...
}
これを達成する方法はありますか?私が見ることができる唯一の代替手段は、AppHarbor のようなカスタム メソッドを使用することですが、可能であれば、組み込みのアプローチに固執したいと思います。
なぜそれをしたいのか誰かが尋ねた場合、その理由は、これは Web ファームで実行されている多数の同一の Web サイトのためです。したがって、自動生成されていないキーを持つことは必須です (各サーバーで同じでなければなりません)。また、各 Web サイトを分離し、同じキーを共有しないようにする必要があります。すべての Web サイトは物理的な表現が同じであるため、同じ物理的な場所を共有しています。これが、web.config ファイルにアプリケーション固有の設定を含めることができない理由です。
編集:少なくともそれが不可能な場合は、確認することは非常に役立ちます. 前述のように、マシン キー設定の使用を完全に回避するカスタム認証および暗号化方法を使用できます。ありがとう。