C# 自定义身份验证-用户帐户模拟最佳实践?

C# 自定义身份验证-用户帐户模拟最佳实践?,c#,.net,security,passwords,C#,.net,Security,Passwords,我在.NET应用程序中有一个自定义身份验证机制,它存储用户密码的散列,然后根据该散列测试输入的密码以授予身份验证票证 随着密码被散列,显然我不知道我的用户密码 对于调试等,我需要能够模拟用户并登录到他们的帐户,但需要一些系统来回避我没有密码这一事实 我考虑的一个选项是对主密码的认证失败的二次测试,虽然我认为这有点弱,因为如果主密码被破坏,那么如果电子邮件地址已知,所有帐户都是可访问的。 是否有人能很好地解决这个问题?这是一个公认的间接响应,但构建功能以使应用程序能够绕过身份验证过程是一种危险的方

我在.NET应用程序中有一个自定义身份验证机制,它存储用户密码的散列,然后根据该散列测试输入的密码以授予身份验证票证

随着密码被散列,显然我不知道我的用户密码

对于调试等,我需要能够模拟用户并登录到他们的帐户,但需要一些系统来回避我没有密码这一事实

我考虑的一个选项是对主密码的认证失败的二次测试,虽然我认为这有点弱,因为如果主密码被破坏,那么如果电子邮件地址已知,所有帐户都是可访问的。


是否有人能很好地解决这个问题?

这是一个公认的间接响应,但构建功能以使应用程序能够绕过身份验证过程是一种危险的方法。我会看看您试图调试的实际流程是什么,帮助您测试这个问题的特定帐户是什么,然后集中精力解决这个问题。也许您可以通过更健壮的单元测试来解决这个问题,也许您甚至需要相同角色的测试帐户来复制行为。不管怎样,我都不会故意破坏你自己的身份验证方案


顺便说一句,希望当你说“存储用户密码的散列”时,里面也有一种加密的随机盐。

谢谢。是的,密码散列是咸的。这就是为什么我要问,通过安全最佳实践然后在应用程序中打开一个巨大的漏洞似乎是错误的,尽管需要能够有效地再现错误。我会从其他方面考虑。我的电子邮件(不会像网络邮件供应商那样)以前被黑客用一个相当强的密码破解过。很确定这是通过“难忘的答案”类型的密码重置工具实现的,这让我想到,有没有比在应用程序安全性中打开这些漏洞的常见做法更好的方法。