Spring Boot Security 4自定义PasswordEncoder

时间:2016-03-29 13:19:11

标签: java spring spring-security spring-boot

我在数据库中有一个包含MD5(用户名+密码)的密码字段。我将如何在Spring Security + JdbcAuthentication中实现它。我知道这无论如何都不安全,但它是一个遗留数据库,我必须与之交谈。我目前的代码如下:

_ca.PathError: Certificate file could not be opened. No such file or directory /etc/flocker/plugin.crt

如果我将散列值作为密码发送,则验证有效。我想我必须配置一些密码编码器。

3 个答案:

答案 0 :(得分:0)

您可以将整个身份验证配置到applicationContext.xlm中,如下所示:

    <sec:authentication-manager>
        <sec:authentication-provider>
            <sec:password-encoder ref="encoder" /> // And here is an encoder that will encode a password which comes from login form.
            <sec:jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="your query"
                authorities-by-username-query="your query for authentication table" />
        </sec:authentication-provider>
    </sec:authentication-manager>

我今天在学校试过,它对我有用。我发现解决我的权威问题是最简单的方法,并希望它也适合你。

PS。抱歉,不确定我的答案显示的正确性。只有读者在这里待了大约一年,现在决定加入并自己写一些问题

答案 1 :(得分:0)

我已经采用了hacky方式,并在ServletFilter中重写了Request Parameters。关键是要使用自定义的HttpServletRequestWrapper来修改请求。

现在,用户名+密码作为密码传递给md5编码器。有一些大写/小写的问题,但调整SQL解决了这个问题。

答案 2 :(得分:-1)

你应该这样做

var userManager = new UserManager<ApplicationUser>(userStore);

希望对你有所帮助。