Проверка пароля в ASP.Net Identity 2 с использованием LDAP в качестве хранилища данных - PullRequest
0 голосов
/ 29 марта 2019

Я реализую аутентификацию для страницы ASP.Net MVC5, используя ASP.Net Identity 2 и LDAP в качестве хранилища для пользователей. Я не использую OWIN.

Я начал создавать свой собственный IUserStore, полученный из IUserPasswordStore. Этот интерфейс должен реализовывать три метода:

  • GetPasswordHashAsync
  • SetPasswordHashAsync
  • HasPasswordAsync

Теперь мне интересно, как проверить пароль для пользователя, поскольку UserManager предлагает только метод CheckPasswordAsync, который принимает объект пользователя и введенный пароль. Мое предположение, как это работает, выглядит следующим образом:

  1. Этот метод использует Passwordhasher, и это VerifyHashedPassword метод.
  2. VerifyHashedPassword затем получает хешированный пароль, предоставленный методом IUserStore s GetPasswordHashAsync.
  3. Поэтому я мог бы реализовать свой собственный хеш-пароль и проверить предоставленный пароль по сохраненному хешу пароля

Если эти предположения верны и это может быть решением, я задаюсь вопросом о безопасности. Каково правильное место для выполнения хеширования и проверки этих хешей ... все это должно происходить внутри LDAP (решение не будет работать) или лучше хешировать пароль перед отправкой в ​​LDAP для хранения, а затем проверить хешированный пароль сам? Может ли получение хешей паролей из LDAP быть вектором атаки, по крайней мере, для извлечения хешей?

Существует ли совершенно другой подход в ASP.Net Identity для аутентификации по LDAP? Я знаю, что существует возможность аутентификации на основе внешнего механизма, но я ожидаю, что это будет необходимо для входа в систему через Google / Facebook и т. Д. которые представляют собственную форму ввода учетных данных и поэтому не подходят для LDAP.

...