Apache Shiro的身份验证问题

RTF

我是Apache Shiro的初学者。我一直在关注文档以及许多其他教程,博客等。但是我只是无法进行身份验证。当我尝试使用有效的用户名和密码登录时,总是被InvalidCredentialsException抛出。我将DynamoDB用作存储用户凭据的自定义领域,但我真的认为这并不重要。显然,这是我存储和/或进行凭据匹配的方式,这是不正确的。这是我的设置:

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

RTF

我想出了如何使其工作。我不得不更改此设置(在我的自定义领域中):

ByteSource passwordSalt = ByteSource.Util.bytes( storedPasswordSalt );

对此:

ByteSource passwordSalt = ByteSource.Util.bytes( 
                                  Base64.decode( storedPasswordSalt) );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Apache Shiro +身份验证问题

来自分类Dev

Apache Shiro身份验证定制

来自分类Dev

绕过Apache Shiro身份验证

来自分类Dev

Apache Shiro身份验证定制

来自分类Dev

Apache Shiro + kerberos身份验证

来自分类Dev

使用Facebook OAuth的Apache Shiro身份验证

来自分类Dev

Apache Shiro和多因素身份验证

来自分类Dev

针对Webapp的Apache Shiro授权和身份验证配置

来自分类Dev

Apache Shiro LDAP配置(两步身份验证)

来自分类Dev

Apache shiro:使用ldap进行用户身份验证,使用数据库进行角色/权限?

来自分类Dev

Apache Shiro和中央身份验证服务(CAS)之间的区别

来自分类Dev

Apache Shiro和中央身份验证服务(CAS)之间的区别

来自分类Dev

Java休眠,Apache Shiro登录身份验证“成功”登录后返回false

来自分类Dev

Apache Shiro:使用用户名/密码进行身份验证,但将用户标识存储为主体

来自分类Dev

为Apache设置Windows身份验证

来自分类Dev

Apache中的多个身份验证流

来自分类Dev

让apache遵循SVN身份验证

来自分类Dev

LDAP的Apache2身份验证

来自分类Dev

绕过特定IP的Apache身份验证

来自分类Dev

仅在Java项目中,通过SSL的Apache ActiveMQ 5.10.0中的身份验证和授权问题

来自分类Dev

在Shiro 1.3.0中实现哈希密码身份验证的问题

来自分类Dev

Shiro身份验证失败

来自分类Dev

Apache Digest身份验证是否比基本身份验证更安全?

来自分类Dev

Apache Digest身份验证是否比基本身份验证更安全?

来自分类Dev

如何在Apache猎犬中设置身份验证?

来自分类Dev

SLL从Django中的Apache进行身份验证

来自分类Dev

Laravel 5:Apache php HTTP身份验证

来自分类Dev

Apache基本身份验证后页

来自分类Dev

Java Apache HttpClient-身份验证失效

Related 相关文章

热门标签

归档