Spring从属性文件加密值

时间:2011-08-30 21:12:58

标签: properties spring-security

我目前正在使用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加载。这可能吗?如果是的话,提示会对我有所帮助,否则我会很高兴看到另一种解决方案。

2 个答案:

答案 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)