none
trust level="Medium" での machineKey の取得方法 RRS feed

  • 質問

  • 初めて投稿させていただきます。

    Web.config の machineKey を取得するために OpenWebConfiguration メソッ
    ドを使用していますが、サーバの trust level が Medium 相当なため、セキ
    ュリティ例外が発生します。

    サーバの trust level の変更はできませんので、別の方法で machineKey を
    取得使用といろいろ調べましたが、方法が見つかりません。

    方法がありましたら教えていただけると幸いです。

    ちなみに、問題のコードは下記のとおりです。

    string path =
        System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath;
    Configuration cfg =
        WebConfigurationManager.OpenWebConfiguration(path);
    MachineKeySection machineKey =
        (MachineKeySection)cfg.GetSection("system.web/machineKey");

    2007年11月3日 5:40

すべての返信

  • デフォルトのmachinekeyを取り出そうとしているのでしょうか?
    あらかじめmachinekeyを自分で作ってweb.configに埋め込むようにしてはどうでしょう。
    この場合わざわざmachinekeyを取り出さずに、自分が作ったものを使えばよいように思います。

     

    #どういう用途でmachinekeyを利用したいのかがわからないので、こういった方法もひとつの解決手段かなと思って書いてみました。

    2007年11月5日 1:58
  • 回答いただき有り難うございます。

    デフォルト値ではなく、自分で machineKey の要素の一つの validationKey

    に設定した暗号キーを、プログラムで動的に取得したいのです。

     

    ユーザが入力したパスワードをそのキーを使って暗号化した上で DB に格納し、

    ユーザ認証に使用するのが目的です。

     

    自分で作った暗号キーですから当然知っているわけで、それをコードに埋め

    込むことはできますし、そうすれば machineKey から取得する必要はなくな

    りますが、それでは接続文字列をコードに埋め込むのと同じで、好ましい解

    決手段とはならないです。

    2007年11月5日 13:46
  • ASP.NETが標準で持っているMembershipの機能を利用しているのであればPasswordFormatの値によって暗号化できるようですが。
    用意されているものを使う、というわけにはいかないんでしょうかね。

    2007年11月5日 17:53
  • 返答をありがとうございます。

     

    DB が標準ではないので、標準の MembershipProvider を使っていないのです。

     

    標準の SqlMembershipProvider の場合は trust level="Medium" でも問題ない

    ので、何か手段がありそうですが、その手段が公開されていないのかもしれませ

    んね。

     

     

     

    2007年11月6日 13:09