如果我有一个存储使用Spring的Bcrypt编码器加密的用户名和密码的数据库,那么如何使用我当前的设置将其解码回Spring中的纯文本?
我的MySQL有这个表用于身份验证:
username | password | enabled
----------------------------------------
varchar(50) | varchar(100) | tinyint
密码字段将包含每个用户的Bcrypt密码 .
现在为CAS的deployerConfigContext.xml .
<bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler">
<property name="tableUsers"><value>user_authentication</value></property>
<property name="fieldUser"><value>username</value></property>
<property name="fieldPassword"><value>password</value></property>
<property name="dataSource" ref="dataSource"/>
</bean>
我将dataSource定义为:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/user_mgt</value>
</property>
<property name="username"><value>root</value></property>
<property name="password"><value>test_pw</value></property>
</bean>
我不确定我是否可以在没有自定义的情况下实现Bcrypt解码 .
1 回答
当你使用散列密码时,不可能恢复纯文本,因为这个存在我们使用散列算法来放置散列密码 . 要对用户进行身份验证,您必须将数据库中的哈希密码与用户输入连接的哈希密码进行比较 . Spring安全性为您做到了,您只需告诉spring安全性您在配置中使用BCryptPasswordEncoder:
请参考spring security文档