2011-06-05 183 views
8

I M使用HTTP Digest连接到我的Spring应用程序,使用Spring DigestAuthenticationFilter HTTP摘要。 该应用程序是使用Tomcat 7 它正常工作与明文密码(在数据库中)与哈希存储密码

我的问题是:我想存储散列密码(与盐如果可能的话),而不是明文。但是如果我理解的很好,HTTP Digest要求密码是纯文本的。

有没有办法在Spring Security的改变呢?

回答

8

我想存储散列密码 (与盐如果可能),而不是在 明文。但是,如果我理解的很好, HTTP摘要要求以明文形式输入密码 。

有没有办法在 Spring Security的改变呢?

不,这是不可改变的,至少在撰写本文时是这样。 Spring Security documentation on Digest Authentication指出以下内容,其中很明显密码必须以明文显示。

配置好的UserDetailsS​​ervice是必要的,因为DigestProcessingFilter 必须有用户的明确 文本密码直接进入 。如果你 在您 DAO中使用编码的密码摘要 认证将无法工作。

+0

才有可能延长DigestAuthenticationFilter使这可能吗? – guigui42 2011-06-06 22:18:53

+0

我不确定这是否会奏效(因为我之前没有尝试过),但这是值得尝试的。您可能还必须扩展DigestProcessingFilterEntryPoint,以便您可以发出一个WWW-Authenticate响应标头,其算法值不是MD5,但由浏览器支持。如果之前扩展类的方案不起作用,您也可以尝试使用DelegatingFilterProxy的不同方法,但我从未见过它用于摘要式身份验证。 – 2011-06-06 22:55:51

+0

有没有办法让一个自定义的AuthenticationProcessingFilter拥有'DigestEntryPoint'作为它的入口点,以便您可以访问用户名和密码? – 2014-10-08 13:29:40