从Apache领域到Spring的身份验证和安全迁移

时间:2020-02-28 10:10:16

标签: java tomcat spring-security

我有一个旧版软件,其中用户管理和凭据处理基于Tomcat Apache Realm

<Realm className="org.apache.catalina.realm.JDBCRealm" 
       dataSourceName="jdbc/mydb"  
       roleNameCol="role_name" userCredCol="password" 
       userNameCol="user_name" userRoleTable="user_roles" 
       userTable="users">
    <CredentialHandler className="org.apache.catalina.realm.SecretKeyCredentialHandler"
                  algorithm="PBKDF2WithHmacSHA512"
                  iterations="100000"
                  keyLength="256"
                  saltLength="16"
    />
</Realm>

我想在我们使用Spring Security开发的新软件中重用该架构以及密码。 我尝试了以下操作,看起来数据库模式正在运行,但是密码不再可读

    Pbkdf2PasswordEncoder passwordEncoder = new Pbkdf2PasswordEncoder();
    passwordEncoder.setAlgorithm(SecretKeyFactoryAlgorithm.PBKDF2WithHmacSHA512);

    auth.jdbcAuthentication()
        .dataSource(dataSource)
        .usersByUsernameQuery("select user_name, password , true from users where user_name=?")
        .authoritiesByUsernameQuery("select user_name, role_name from user_roles where user_name=?")
        .passwordEncoder(passwordEncoder);

但是当我尝试使用密码登录时,出现以下错误:

java.lang.IllegalArgumentException: Detected a Non-hex character at 33 or 34 position
at org.springframework.security.crypto.codec.Hex.decode(Hex.java:62)
at org.springframework.security.crypto.password.Pbkdf2PasswordEncoder.decode(Pbkdf2PasswordEncoder.java:166)
at org.springframework.security.crypto.password.Pbkdf2PasswordEncoder.matches(Pbkdf2PasswordEncoder.java:142)
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:90)
at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:166)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:175)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:200)

有人可以告诉我如何正确配置Spring安全性以处理此迁移。

0 个答案:

没有答案
相关问题