对不起,如果这是一个微不足道的问题,但我不知道怎么做真的很好:D
我正在使用官方c#-mongodb-driver。
Mongodb以明文形式存储用户密码吗?所以我必须注意安全密码?用c#做最好的方法是什么?
这是否正常(在驱动程序源中过时的addUser-Method中发现类似内容)?
var securePassword = new PasswordEvidence(password).SecurePassword;
var userCommand = new CommandDocument
{
{ "createUser", username },
{ "pwd", securePassword.ToString() },
{ "digestPassword", false },
{ "customData", new BsonDocument()},
{ "roles", new BsonArray()}
};
var result = Database.RunCommand(userCommand);
c#-driver正在使用密钥" digestPassword"但我找不到任何相关的文件。任何想法是什么意思以及没有正确记录的原因?
如何在不访问admin-database(无法访问db.system.users.find())的情况下检查输入的用户/密码组合是否正确?有没有帮助方法?我找不到一个......
托拜厄斯
答案 0 :(得分:0)
Mongodb以明文形式存储用户密码吗?所以我必须注意安全密码?
对于MongoDB中的默认身份验证(aka MONGODB-CR
或“challenge-response auth”),密码在内部存储为MD5( <username> + ":mongo:" + <password_text> )
的十六进制编码。它们由司机通过电汇以摘要形式发送(请参阅下面的问题的答案,而不是明文)。
您应该始终关心选择安全密码并正确锁定MongoDB部署。 MongoDB文档有一个相当全面的section on Security,包括风险管理策略和访问控制教程。
c#-driver正在使用密钥“digestPassword”,但我找不到任何相关文档。任何想法这意味着什么以及为什么没有正确记录?
digestPassword
被记录为Implement Authentication in a Driver的一部分,除非您正在实施驱动程序,否则不是您通常需要关注的细节。
驱动程序使用两步过程进行身份验证:
1)请求在后续身份验证请求中使用十六进制nonce
2)使用组合现时和密码摘要的消息摘要进行身份验证
这是否正常(在驱动程序源中过时的addUser-Method中发现类似内容)?
不推荐使用addUser方法,而是使用createUser
命令,这是一个以角色为特色的较新实现。
我强烈建议使用documented C# driver API,而不是尝试重新实现较低级别的驱动程序命令。
如何在不访问admin-database(无法访问db.system.users.find())的情况下检查输入的用户/密码组合是否正确?有没有帮助方法?我找不到一个......
您可以尝试使用它进行身份验证来检查用户/密码组合。您还必须考虑用户的角色是否授予运行请求命令的适当权限(如果不是,您的应用程序将必须处理auth异常)。
如果要查看或管理身份验证详细信息(并假设您具有相应的权限),mongo
shell中有一整套User and Role Management帮助程序。