首页 > 解决方案 > 使用 LDAP 作为数据存储验证 ASP.Net Identity 2 中的密码

问题描述

我正在使用 ASP.Net Identity 2 和 LDAP 作为用户的存储来实现 ASP.Net MVC5 页面的身份验证。我没有使用 OWIN。

我开始创建我自己的 IUserStore 派生自IUserPasswordStore. 该接口需要实现三个方法:

我现在想知道如何验证用户的密码,因为UserManager只提供了一个CheckPasswordAsync接受用户对象和输入密码的方法。我的假设如下:

  1. 此方法使用Passwordhasherand it'sVerifyHashedPassword方法。
  2. VerifyHashedPasswordIUserStore然后接收sGetPasswordHashAsync方法提供的哈希密码。
  3. 因此,我可以实现自己的密码哈希并根据保存的密码哈希验证提供的密码

如果这个假设是正确的,这可能是我想知道安全性的解决方案。执行散列和验证此散列的正确位置是什么...应该全部发生在 LDAP 内部(该解决方案不起作用),或者最好在发送到 LDAP 进行存储之前散列密码,然后检查散列密码我自己?从 LDAP 中检索密码哈希是否会成为至少获取哈希的攻击媒介?

ASP.Net Identity 中是否存在针对 LDAP 进行身份验证的完全不同的方法?我知道有可能针对外部机制进行身份验证,但我希望这是为 Google/Facebook 等登录而设计的。它提供自己的凭据输入表单,因此不适合 LDAP。

标签: asp.net-mvc-5ldapasp.net-identity-2

解决方案


推荐阅读