2017-09-30 11 views
0

dapper + identity core 2.0を使用できるようにする、きちんとしたきれいなパッケージであるとわかりました。しかし、私はコア開発のために非常に新しいので、私は何かについて少し混乱しているし、それを解決する方法がわからない。問題のパッケージは次のとおりです。https://github.com/grandchamp/Identity.DapperIdentity Aspnetcore 2.0でDapperを設定する

パッケージが私に求めているのは、マイナーな設定を行うことです。ここでの手順は以下のとおりです。

//To configure the DBMS connection, you can add a DapperIdentity and a DapperIdentityCryptography section to your configuration file like this: 

"DapperIdentity": { 
    "ConnectionString": "Connection string of your database", 
    "Username": "user", 
    "Password": "123" 
}, 
"DapperIdentityCryptography": { 
    "Key": "base64 32 bits key", 
    "IV": "base64 16 bits key" 
} 

は本当に私を混乱することはDapperIdentityCryptography一部です。私はそれをそのまま残すか、暗号化された文字列を提供することを期待していますか?私はそれを得ていない。私が混乱している部分は、Connection文字列を読みやすい形式にしておくことです。私はそれを暗号化し、ConnectionStringセクションに配置し、それを解読するキーを提供するはずです。

答えて

2

私が現時点で見ることができるから、DapperIdentityCryptographyセクションは、DapperIdentityセクション内にあるPasswordセクションを解読するためにのみ使用されます。暗号化されたパスワードと暗号化キーの両方を同じファイルに保存しているため、これはあまり役に立ちません。これは、パスワードをプレーンテキストで保存するのとほぼ同じです。

また、パスワードをプレーンテキストで直接保存し、DapperIdentityCryptographyセクション全体を無視することもできます。

例:、代わりに、あなたはAESのキーとIVのペアを生成する必要がある暗号化セクションを使用する場合は

"DapperIdentity": { 
    "ConnectionString": "Server=myServerAddress;Database=myDataBase", 
    "Username": "MyUserName", 
    "Password": "MyPassword" 
} 

、それをあなたのDBのパスワードを暗号化して、内部のキーとIVを保存appsettings.jsonをBASE64文字列に変換してください(または開発マシンでコマンドラインユーティリティdotnet user-secretsをドキュメントのように使用することもできます)。また、DbパスワードをUTF8文字列に変換することもできます。

次に、あなたのappsettings.jsonが(サンプルから取られた)次のようになります。

"DapperIdentity": { 
    "ConnectionString": "Server=myServerAddress;Database=myDataBase", 
    "Username": "MyUserName", 
    "Password": "MYUTF8STRINGENCRYPTEDPASSWORD" 
}, 
"DapperIdentityCryptography": { 
    "Key": "FrFE/VtQ5pfNhGYVnyf65Sa6j4h6ion3ItkAnqLsnBE=", // this is an example, never use in production 
    "IV": "Ig/YU0tgUqI1u2VzWH0plQ==" // this is an example, never use in production 
} 
+0

私はAESのためのキーとIVのペアを生成するにはどうすればよいですか?これは私にとって初めてのことです。 – Bojan

+1

あまりにも多くの方法がありますが、私が考えることができる最も簡単なのはOpenSSLを使うことです。しかし、必要ならば、次の方法を使用して.NET 4+で作成することもできます:https://stackoverflow.com/a/2512373/3670737 –

関連する問題