me gustaría añadir sal como:sal Spring Security para DetallesUsuario personalizados
PasswordEncoder encoder = new ShaPasswordEncoder();
userDetails.setPassword(encoder.encodePassword(userDetails.getPassword(),saltSource.getSalt(userDetails));
en la medida de userDetails
es ejemplo de mi clase personalizada UserDetail
, i obligado a echarlo a esta clase de primavera: UserDetails , sino como se espera lógicamente que me dieron en tiempo de ejecución:
java.lang.ClassCastException: model.UserDetails cannot be cast to org.springframework.security.core.userdetails.UserDetails
config:
<beans:bean id="saultSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource">
<beans:property name="userPropertyToUse" value="username"/>
</beans:bean>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<password-encoder hash="sha">
<salt-source user-property="username"/>
</password-encoder>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
</authentication-manager>
¿Cómo puedo configurar sal correctamente en este caso?
+1 para 'BCryptPasswordEncoder' – Roadrunner
@Luke, según tengo entendido por su publicación vinculada,' BCrypt' ya contiene Salt.¿Cómo puedo configurar Salt en este caso? ¿Es configurable en absoluto, cuando se usa 'BCrypt'? Allí decía:" Esto genera automáticamente una sal y la concatena con el valor hash en una sola cadena " – sergionni
@sergionni: fíjese en el cambio de la API en Spring Security. En 3.0.x, [PasswordEncoder] (http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/encoding/PasswordEncoder.html) utiliza la sal para codificar la contraseña Pero en 3.1.x, el [PasswordEncoder] (http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/PasswordEncoder.html) doesn ' usar la sal El consejo de Luke es para la versión 3.1.x ** solo **. – Roadrunner