我检查了这个论坛和文档,但没有找到这个问题的答案,也就是说,我怎样才能使用基本的 java 对象作为 MD5 编码的盐来进行基本的 Spring Security 配置设置?
这是我的 Spring Security 上下文片段配置:
<beans:bean id="saltSource" class="com.myproject.sec.util.MyString" scope="singleton" >
<beans:constructor-arg value="12345" />
</beans:bean>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder hash="md5">
<salt-source ref="saltSource" />
</password-encoder>
</authentication-provider>
</authentication-manager>
...但是这个配置抛出了一个不需要的错误异常抱怨盐源不是 org.springframework.security.authentication.dao.SaltSource 接口,但我不想使用用户详细信息的属性作为我的盐(因为这个接口支持用户详细信息),而是我的自定义字符串对象,如上所示。我该如何做到这一点?
另外,作为第二个密切相关的问题,我知道我可以像这样将 Salt 作为用户名:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder hash="md5">
<salt-source user-property="username"/>
</password-encoder>
</authentication-provider>
</authentication-manager>
并且,有一个系统范围的固定盐“12345”,如下所示:
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userService">
<password-encoder hash="md5">
<salt-source system-wide="12345"/>
</password-encoder>
</authentication-provider>
</authentication-manager>
...但是我如何将 Salt 作为用户名和系统范围常量“12345”的串联,例如,如果用户名是 fred,则将 Salt 设置为“fred12345”而不诉诸于重写来实现我自己的编码?