У меня есть SHA-256 хеш пароля, хранящийся в моей базе данных SQL Express. В той же таблице у меня есть соответствующая соль . Оба были сгенерированы с Java-кодом в па. Теперь, используя Широ, я хочу подключиться к своей базе данных, получить хеш и соль и сравнить ее с учетными данными, указанными на странице входа. Моя проблема заключается в том, что я всегда получаю IncorrectCredentialsException .
Я уверен, что программа до сих пор подключается к базе данных, так как она возвращает ошибку, сообщающую, что пользователь не существует, если имя пользователя неверно,Также из журналов БД видно, что программа запрашивает базу данных.
[main]
# specify login page
authc = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc.loginUrl = /application/Login
authc.usernameParam = user
authc.passwordParam = pass
authc.rememberMeParam = remember
authc.successUrl = /application/IndexServ.jsp
# password matcher
passwordMatcher = org.apache.shiro.authc.credential.PasswordMatcher
passwordService = org.apache.shiro.authc.credential.DefaultPasswordService
passwordMatcher.passwordService = $passwordService
# database conn
ds = org.apache.shiro.jndi.JndiObjectFactory
ds.resourceRef = true
ds.resourceName = jdbc/application_data/server_startup
ds.requiredType = javax.sql.DataSource
# realms
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource=$ds
jdbcRealm.permissionsLookupEnabled = true
sha256Matcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher
sha256Matcher.hashAlgorithmName = SHA-256
sha256Matcher.storedCredentialsHexEncoded = false
sha256Matcher.hashIterations = 100
sha256Matcher.hashSalted = true
jdbcRealm.authenticationQuery = SELECT UserPasswordHash, UserPasswordSalt FROM USERS WHERE UserName = ?
jdbcRealm.credentialsMatcher = $sha256Matcher
Я подозреваю, что сделанное сравнение не сделано для SHA-256. Можно ли даже использовать defaultMatcher по умолчанию для аутентификации пользователей с хешем и солью, записанными в таблице?