使用ASP.NET身份个人帐户的MVC - 如何添加安全问题?

时间:2015-02-04 22:03:10

标签: asp.net asp.net-mvc security asp.net-identity

以下是我的情景:

我需要捕获至少3个安全问题&答案作为网站用户注册的一部分(内置MVC 5使用个人用户帐户作为身份验证方式)。我可以通过扩展ApplicationUser对象来做。

到目前为止一切顺利。

我想在密码恢复过程中提出这些问题。

我没有在ASP.NET Identity框架中找到任何对安全问题的支持。

我的问题:

我是否需要在内置的UserStore库中实现安全性问题,或者是否存在类似于.NET 2.0中ASP.NET成员身份功能中的秘密问题的支持?

注意:如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:4)

要在ASP.Net Identity中执行此操作,请将答案视为自定义密码。

使用userManager.PasswordHasher.HashPassword(Answer1);为每个答案生成一个哈希值,以存储在数据库中的自定义类属性/字段中。 (其中userManager是Identity UserManager的实例)

恢复时,请使用

var verification = userManager.PasswordHasher.VerifyHashedPassword(dbHash, Answer1);

验证挑战。

然后,您可以检查每个答案是否为verification.Success

参考:MSDN