Shiro JdbcRealmとSHA256 hashedcredentialsMatcherを使用しようとしています。私は、レガシーデータベースを更新して、各ユーザに適切な塩を割り当てる必要があります(バッチルーチンを介して)。JdbcRealmの塩を取得/設定する方法
Shiroフレームワークを使用して、特定のアカウントの塩を取得/設定するにはどうすればよいですか?
Shiro JdbcRealmとSHA256 hashedcredentialsMatcherを使用しようとしています。私は、レガシーデータベースを更新して、各ユーザに適切な塩を割り当てる必要があります(バッチルーチンを介して)。JdbcRealmの塩を取得/設定する方法
Shiroフレームワークを使用して、特定のアカウントの塩を取得/設定するにはどうすればよいですか?
多分少し遅れ:
このtutorialを見てください。
ブログを所有しているメリは、の塩漬けJDBCレルムを作成する方法を正確に説明しています。
これは、バージョン1.3.0のコミュニティで承認済みのimprovementです。
これがうまくいけば楽しいです!
史郎1.2.3ですべてを行う必要がある:
はJDBCレルム拡張と塩のスタイルを設定します。
public class JdbcSaltRealm extends JdbcRealm { public JdbcSaltRealm() { setSaltStyle(SaltStyle.COLUMN); } }
アップデートは、拡張領域を使用すると、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
ハッシュ&塩電流/新しいユーザーのパスワードをから塩列を取得するためにを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
私は私の答えははっきりと理解を願っています。
これは本当にうまく動作します。ありがとうございました。 –