2012-02-13 53 views
2

我正在嘗試使用Shiro JdbcRealm和SHA256 hashedcredentialsMatcher。我需要更新遺留數據庫併爲每個用戶分配適當的salt(通過批處理例程)。如何獲取/設置JdbcRealm的鹽

如何使用Shiro框架爲特定帳戶獲取/設置鹽?

回答

1

也許有點晚:

看一看這個tutorial
梅里,誰擁有博客的人,準確地描述瞭如何創建一個自己的醃製JDBC領域

社區版本1.3.0中這也是一個公認的improvement

希望這個盡情享受吧!

6

隨着四郎1.2.3所有你需要做的是:

  1. 擴展JdbcRealm並設置鹽風格。

    public class JdbcSaltRealm extends JdbcRealm { 
        public JdbcSaltRealm() { 
         setSaltStyle(SaltStyle.COLUMN); 
        } 
    }
  2. 更新shiro.ini使用擴展領域,並從DB

得到鹽柱
credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher 
credentialsMatcher.hashAlgorithmName = SHA-256 
jdbcRealm = com.mypackage.JdbcSaltRealm 
jdbcRealm.authenticationQuery = SELECT password, salt FROM user WHERE username = ? 
jdbcRealm.credentialsMatcher = $credentialsMatcher
  1. 哈希&鹽電流/新用戶的密碼。這應該爲所有現有用戶以及新用戶註冊完成。

    private void saltHashPassword(String password) { 
    
    
    String salt = new BigInteger(250, new SecureRandom()).toString(32); 
    
        //TODO: save salt value to "salt" column in user table 
    
        Sha256Hash hash = new Sha256Hash(password, (new SimpleByteSource(salt)).getBytes()); 
        String saltedHashedPassword = hash.toHex(); 
    
        //TODO: save saltedHashedPassword value to "password" column in user table 
    
    }

我希望我的回答是明確的和可以理解的。

+0

這工作得很好。謝謝。 – 2017-01-01 16:32:03