我目前正在使用UserDetailsService
从用户文件中获取值:
<bean id="userDetailsService" class="org.springframework.security.userdetails.memory.InMemoryDaoImpl">
<property name="userProperties" value="users.properties"/>
</bean>
我的属性文件应由管理员编辑,用户名密码未加密:
bob=bobpassword
alice=alicepassword
现在,由于我在应用程序中使用PasswordEncoder
,我需要加密密码并将其添加到UserDetails
。这可以在代码中的某个地方完成,但在我看来并不是很方便。
我找到了PropertyPlaceholderConfigurer
方法convertPropertyValue(String value)
,可以覆盖它。
根据我的理解,应该可以将属性文件加载到PropertyPlaceholderConfigurer
,其中属性可以在convertPropertyValue
方法中加密,然后由UserDetailsService
加载。这可能吗?如果是的话,提示会对我有所帮助,否则我会很高兴看到另一种解决方案。
答案 0 :(得分:2)
看一下Jasypt,这是一个java库,它允许开发人员以最小的努力为他/她的项目添加基本的加密功能,而无需深入了解密码学的工作原理。 / p>
您可以看到如何使用Spring here
对其进行配置作为替代方案,您也可以实施自己的propertyPersister
来执行(d)加密:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:com/foo/jdbc.properties</value>
</property>
<property name="propertiesPersister">
<bean class="com.mycompany.MyPropertyPersister" />
</property>
</bean>
查看示例here
答案 1 :(得分:0)