【发布时间】:2011-05-20 15:12:47
【问题描述】:
我正在使用 Spring roo 开发一个应用程序。 作为暗示 Spring 安全性的第一个身份验证测试,我对数据库中的表使用身份验证。效果很好:
<authentication-manager alias="authenticationManager">
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource" authorities-by-username-query="select username,authority from users where username=?"/>
</authentication-provider>
</authentication-manager>
现在事情变得更具挑战性(对我而言),因为“真实”(在生产环境中)用户表中的密码是加密的,我必须首先使用哈希函数 md5,然后使用 base64 编码以及iso 来处理特殊字符。
我必须创建一个自定义 jdbc-user-service。处理这些操作的最佳做法是什么?
【问题讨论】:
-
您是否查看过 Spring Security 附带的现有密码编码器功能?
-
是的。这很好,但不幸的是,用于现有用户名和密码的编码方法有点奇怪,我必须构建它......
-
是的,我明白了,但是如果您查看现有的实现,您应该对如何实现这一点有一些很好的指导。我不明白您为什么需要自定义 JDBC 用户服务,连接到您的用户详细信息服务的密码编码器实现应该可以正常工作。
-
我想我很难弄清楚你的问题是什么——你想知道如何创建自定义密码编码器,或者如何将其连接到标准 JDBC 用户服务,或者两者都有?
-
我实际上两者都需要。你是对的,我的问题并不精确,因为我不完全了解弹簧安全性。我在密码编码器标签上找到了一些很好的资源(使用 bean 的引用),但我对如何创建密码编码器以及如何使用不同的方法感到困惑。
标签: spring authentication spring-security spring-roo