2016-12-09 14 views
0

Я использую siro как аутентификацию для моего приложения java 1.8. Мое создание пользователя будет sha256 и соль.Shiro соответствия учетных данных Создание шаблонов и паролей пользователей не соответствует

Shiro будет соответствовать только паролям, если они точны в базе данных, введенной. Например, если пароль базы данных был в открытом виде и был «паролем», и я ввел «пароль», это сработает.

Если я ввел «пароль», когда пароль зашифрован в базе данных, он не совпадает и не будет работать.

Как получить shiro для создания файла sha256 и соленых паролей из введенного пароля, чтобы пароли совпадали?

Мой код создания пользователя

EntityManagerFactory factory = 
        Persistence.createEntityManagerFactory("e"); 

      EntityManager em = factory.createEntityManager(); 
      em.getTransaction().begin(); 

      com.e.dto.User user = new com.e.dto.User(); 

      DefaultPasswordService a = new DefaultPasswordService(); 
      password = a.encryptPassword(password); 

      user.setUsername(username); 
      user.setPassword(password); 

      em.persist(user); 

     em.getTransaction().commit(); 

shiro.ini

jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm 
jdbcRealm.authenticationQuery = SELECT password from user where username = ? 
jdbcRealm.userRolesQuery = select role from userroles where userID = (select id FROM user WHERE username = ?) 

ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
ds.serverName = localhost 
ds.user = root 
ds.password = password 
ds.databaseName = myDatabase 
jdbcRealm.dataSource= $ds 

credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher 
credentialsMatcher.hashAlgorithmName = SHA-256 
credentialsMatcher.storedCredentialsHexEncoded = true 
credentialsMatcher.hashIterations = 10000 
credentialsMatcher.hashSalted = true 

Новые Пользователи пароль

$shiro1$SHA-256$500000$xRvz5dByhvAtFG7VHlCjHA==$xxakvEZdBF6cI+UmyR1OY098tAlscOKhpwQuT7THijw= 

ответ

1

Чтобы получить пароли, чтобы соответствовать объект DefaultPasswordService должен быть создан в INI а затем установить как org.apache.shiro.authc.credential.PasswordMatcherpasswordService значение

https://shiro.apache.org/static/1.3.1/apidocs/org/apache/shiro/authc/credential/PasswordService.html

passwordService = org.apache.shiro.authc.credential.DefaultPasswordService 
# configure the passwordService to use the settings you desire 

passwordMatcher = org.apache.shiro.authc.credential.PasswordMatcher 
passwordMatcher.passwordService = $passwordService 

 Смежные вопросы

  • Нет связанных вопросов^_^