如此处所述,SecureString
这不是在这种情况下使用的最佳方式。
如果我需要共享用户凭据,我可能会共享用户名和hashed + salted 密码,这样你就安全了,只共享密码的表示,而不是它的内容。
简单的方法是例如使用BCryt 库(其中有一个 .NET 表示形式)并将用户名和密码表示形式简单地托管在准备好共享的表中
这是你将如何使用它:
StringBuilder sb = new StringBuilder();
// run ADO.NET / Entity Framework / etc and query your DB with something like:
"SELECT user_id, username, password FROM [TblUsers];"
// loop through the results
sb.AppendFormat(
"INSERT INTO [TblSharedUsers] SELECT '{0}','{1}','{2}'",
dr["id"], dr["username"],
BCrypt.HashPassword(dr["password"], BCrypt.GenerateSalt(12));
);
// then run sb.ToSTring() agains your db
在客户端,您可以创建一个新的(因此当网络不可用时使用IoC和DIAuthenticationProvider
很容易更改)读取并检查用户密码,例如TblSharedUsers
string userPassword = Request["password"];
"SELECT id, password FROM [TblSharedUsers] WHERE username = @usr;"
if( BCrypt.CheckPassword(userPassword, dr["password"]) )
// User can log in
else
// Credentials are invalid
我希望这可以帮助有同样问题的人。