Я новичок в Apache Shiro. Я слежу за документами и множеством других учебников, блогов и т. Д., Но я просто не могу заставить аутентификацию работать. Когда я пытаюсь войти с действительным именем пользователя и паролем, я всегда получаю InvalidCredentialsException
. Я использую DynamoDB как пользовательский мир для хранения учетных данных пользователей, но я действительно не думаю, что это имеет значение. Очевидно, что я сохраняю и/или выполняю соответствующие учетные данные, это неверно. Вот мои настройки:Ошибка аутентификации с Apache Shiro
Shiro.ini:
[main]
myRealm = com.enki.closing.users.DynamoDBRealm
credentialsMatcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
credentialsMatcher.storedCredentialsHexEncoded = false
credentialsMatcher.hashIterations = 1024
myRealm.credentialsMatcher = $credentialsMatcher
Создать учетную запись:
String password = ...
ByteSource passwordSalt = new SecureRandomNumberGenerator().nextBytes();
String hashedPasswordBase64 = new Sha256Hash(password, passwordSalt, 1024).toBase64();
// store the hashedPassword and salt in DynamoDB...
// I've tried storing the salt with and without base64 encoding.
пароль и соль хранится штраф в DynamoDB, значения выглядят хорошо. Вот пользовательская область для аутентификации:
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
UsernamePasswordToken userPass = (UsernamePasswordToken) token;
String username = userPass.getUsername();
...
// pull the matching password and salt out of DynamoDB, no problems...
ByteSource passwordSalt = ByteSource.Util.bytes(storedPasswordSalt);
return new SimpleAuthenticationInfo(username, passwordHash, passwordSalt, getName());
}
Это все в значительной степени то, что документы говорят мне делать, но есть что-то не так. Когда я попробую войти, он получит InvalidCredentialsException
.