Я создал простое приложение MVC4 и зарегистрировал пользователя. Имя usr и пароль хранятся в таблице под названием AspNetUsers. В этой таблице нет солевого поля.ASP.NET Identity - где хранится соль?
Как я понял, когда пользователь входит в систему; они вводят имя пользователя и пароль. Затем соль объединяется с введенным паролем и сравнивается с паролем в базе данных. Это неправильно? т.е.
Hash(PasswordEntered) + Salt = Password in database = authenticated
Hash(PasswordEntered) + Salt <> Password in database = not authenticated
Существует поле под названием: aspnetusers.SecurityStamp, однако мое исследование говорит мне, что это не соль.
Update
Я только что прочитал Скотт Чемберлена. Пожалуйста, ознакомьтесь с инструкциями ниже:
1) Пользователь вводит: Hello123 в качестве пароля при регистрации, а соль (произвольно сгенерированная): 456, то пароль, введенный в PasswordHash: Hello123 + 456 2) Затем пользователь пытается ввести логин и ввести Hello123 (правильно) в качестве пароля. Соль (произвольно сгенерированная) равна: 567. Поэтому Hello123 + 456 сравнивается с Hello123 + 567, и аутентификация терпит неудачу.
В этом случае пользователь вводит правильный пароль и не аутентифицируется. Мне явно не хватает чего-то фундаментального здесь.
в моей БД в AspNetUsers есть летающая называется [PasswordHash] –
@federico scamuzzi, спасибо. Однако, где соль? – w0051977
там в поле taht есть ваш пароль ... соленое –