2012-02-13 4 views
2

Shiro JdbcRealmとSHA256 hashedcredentialsMatcherを使用しようとしています。私は、レガシーデータベースを更新して、各ユーザに適切な塩を割り当てる必要があります(バッチルーチンを介して)。JdbcRealmの塩を取得/設定する方法

Shiroフレームワークを使用して、特定のアカウントの塩を取得/設定するにはどうすればよいですか?

答えて

1

多分少し遅れ:

このtutorialを見てください。
ブログを所有しているメリは、の塩漬けJDBCレルムを作成する方法を正確に説明しています。

これは、バージョン1.3.0のコミュニティで承認済みのimprovementです。

これがうまくいけば楽しいです!

6

史郎1.2.3ですべてを行う必要がある:

  1. はJDBCレルム拡張と塩のスタイルを設定します。

    public class JdbcSaltRealm extends JdbcRealm { 
        public JdbcSaltRealm() { 
         setSaltStyle(SaltStyle.COLUMN); 
        } 
    }
  2. アップデートは、拡張領域を使用すると、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. ハッシュ&塩電流/新しいユーザーのパスワードをから塩列を取得するためにをshiro.ini。これは、既存のすべてのユーザーと新しいユーザーの登録に対して行う必要があります。

    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

これは本当にうまく動作します。ありがとうございました。 –

関連する問題