我找到了一个看起来很整洁的小软件包,可让您使用Dapper Identity Core 2.0。但是,由于我对核心发展非常陌生,因此我对某些事情感到有些困惑,我不确定如何解决。有问题的包是:https://github.com/grandchamp/indistity.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
部分。它是否期望我像它一样留下它,还是希望我提供某种加密的字符串。我只是不明白。我感到困惑的另一部分是将连接字符串以可读的格式留下,我有一种感觉,我应该加密它,将其放在连接串部分中,然后提供解密的钥匙?
从目前我可以看到的DapperIdentityCryptography
部分仅用于解密DapperIdentity
部分内提供的Password
。这不是很有用,因为您同时将加密密码和加密密钥存储在同一文件中,这几乎是将密码存储在纯文本中。
您也可以将密码直接存储在纯文本中,而完全忽略DapperIdentityCryptography
部分。
示例:
"DapperIdentity": {
"ConnectionString": "Server=myServerAddress;Database=myDataBase",
"Username": "MyUserName",
"Password": "MyPassword"
}
相反,如果要使用密码学部分,则需要生成一对键,然后将IV生成AES,请使用它加密DB密码,然后将键和IV存储在您的appsettings.json
中,转换为Base64 strings (或者您可以在开发机器中使用命令行实用程序dotnet user-secrets
,如文档所说的),然后在UTF8字符串中使用DB密码。
然后您的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
}