2016-09-21 14 views
4

開発マシンで実行中のASPNETコアサイトを利用して、いくつかの初期ユーザーのパスワードを保存する新しいローカル秘密マネージャーを利用します。私はIConfigurationRoot.GetSection( "username")経由で秘密ストアにアクセスします。ここでASPNETコア:秘密になっているAzureのアプリケーション設定へのアクセス

はIConfigurationRootがStartup.csに建設されます方法は次のとおりです。

var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 

    if (env.IsDevelopment()) 
    { 
     // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709 
     builder.AddUserSecrets(); 
    } 

    builder.AddEnvironmentVariables(); 
    Configuration = builder.Build(); 

最終ラインがIConfigurationRootプロパティであること。

これは開発に役立ちます。残念ながら、私がサイトをAzureに公開したとき、パスワードは見つからない。 Azureは秘密隠しをサポートしていませんが、環境変数を設定できます。同じ鍵を使用すると、構成コードが構成情報の要求を解決しようとしたときに、その鍵が見つかると思いました。残念ながら、それは動作していないので、私は明らかに何かが欠けています。ここで

は、私はアズールで設定したキーを持っている方法は次のとおりです。私は成功した私の開発マシン上の秘密の隠し場所にアクセスするために使用するよう

env vars

は、それらは同じキーです。

どうしたのですか?

+0

Hey Markは、ツール/コマンドラインを使って設定した秘密の 'key、value'ペアです。' appSettings.json'の権利にありますか?もし 'yes'ならばAzure'sによって' overrideen'することができます。希望は意味をなさない。基本的には、 'Appsettings.json'と' secrets.json'構造は、それらをアプリケーションで使うために同じでなければなりません。 – Jaya

+0

Thanx、JS、しかし私はそれが正しいとは思わない。少なくとも、私は、Azureのものが何らかの環境変数になる可能性があると言ったことを覚えているようです。さらに、appSettings.jsonに秘密の資格を置くことは、私がしたいことではありません。Azure環境変数は、これまで公開されていないはずです。 –

+0

オハイオ州私はあなたが 'appSettings.json'の価値を望んでいないことを理解しています - 私が意図したことは、AzureのAppSettingsが識別して置き換えるための' dummy'値を持つ構造体を必要とすることです。我々はそれを働かせる。私は、AzureのappSettingsの第2部分には読まれていないと答えようとしていました。したがって、私たちの場合、AzureSQLを指すAzurePortalのlocalDbを指す接続文字列を – Jaya

答えて

3

私が知る限り、シークレットマネージャツールは、ソースコードから秘密を守るのに役立ちます。そして、このtutorialが述べたように:

シークレットManagerツールは、格納された秘密を暗号化しないと信頼できるストアとして扱われるべきではありません。これは開発目的のみのものです。キーと値は、ユーザープロファイルディレクトリのJSON構成ファイルに格納されます。

一方、秘密は、ユーザープロファイルディレクトリのJSONファイルに保存されています。次のように窓の場合、それはパスに格納されます:私はアズールにサイトを公開したときに

%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json

残念なことに、パスワードが発見されていません。

私の機密データをユーザーの秘密を介してASP.NETコアプロジェクトに保存すると、私の側でうまくいくことがわかりました。あなたのアプリをAzureに公開するときは、Azure App Servicesアプリケーション設定を利用して、開発中にSecret Managerツールを使用して保存された機密値を上書きすることができます。ここでは、それを理解するためのサンプルです。

次のように敏感な値を格納するsecrets.jsonファイルの構造を仮定:

その後、次のようにあなたはAzureのWeb Appのアプリの設定を行うことができ
{ 
    "AppKeys": { 
    "mark": "ABCDEF", 
    "connel": "abcdef" 
    } 
} 

このアイデアをよりよく理解するために、User Secrets – Storing sensitive data in ASP.NET Core projectsWorking with Azure App Services Application Settings and Connection Strings in ASP.NET Coreに従うことができます。

+0

Thanx、Bruceと見なしました。 FWIWは、開発マシンの秘密ストアとAzureアプリケーションの設定の両方で、キー(ConnellとMark)がルートレベルであることを除いて、私が現在行っているアプローチです。しかし、それに続く別のリンクを持つことは良いことです。 –

関連する問題