diff --git a/core/src/main/java/org/springframework/security/config/PasswordEncoderParser.java b/core/src/main/java/org/springframework/security/config/PasswordEncoderParser.java
index 2bedf5d510..85d546cbcd 100644
--- a/core/src/main/java/org/springframework/security/config/PasswordEncoderParser.java
+++ b/core/src/main/java/org/springframework/security/config/PasswordEncoderParser.java
@@ -55,14 +55,17 @@ public class PasswordEncoderParser {
private BeanMetadataElement passwordEncoder;
private BeanDefinition saltSource;
-
public PasswordEncoderParser(Element element, ParserContext parserContext) {
parse(element, parserContext);
}
private void parse(Element element, ParserContext parserContext) {
String hash = element.getAttribute(ATT_HASH);
- boolean useBase64 = StringUtils.hasText(element.getAttribute(ATT_BASE_64));
+ boolean useBase64 = false;
+
+ if (StringUtils.hasText(element.getAttribute(ATT_BASE_64))) {
+ useBase64 = Boolean.parseBoolean(element.getAttribute(ATT_BASE_64));
+ }
String ref = element.getAttribute(ATT_REF);
@@ -73,10 +76,10 @@ public class PasswordEncoderParser {
RootBeanDefinition beanDefinition = new RootBeanDefinition(beanClass);
beanDefinition.setSource(parserContext.extractSource(element));
if (useBase64) {
- if (beanClass.isAssignableFrom(BaseDigestPasswordEncoder.class)) {
+ if (BaseDigestPasswordEncoder.class.isAssignableFrom(beanClass)) {
beanDefinition.getPropertyValues().addPropertyValue("encodeHashAsBase64", "true");
} else {
- logger.warn(ATT_BASE_64 + " isn't compatible with " + OPT_HASH_LDAP_SHA + " and will be ignored");
+ logger.warn(ATT_BASE_64 + " isn't compatible with " + hash + " and will be ignored");
}
}
passwordEncoder = beanDefinition;
diff --git a/core/src/test/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParserTests.java b/core/src/test/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParserTests.java
index e13cd7735f..bae13d3a33 100644
--- a/core/src/test/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParserTests.java
+++ b/core/src/test/java/org/springframework/security/config/AuthenticationProviderBeanDefinitionParserTests.java
@@ -72,19 +72,17 @@ public class AuthenticationProviderBeanDefinitionParserTests {
}
@Test
- public void worksWithJdbcUserService() throws Exception {
+ public void passwordIsBase64EncodedWhenBase64IsEnabled() throws Exception {
setContext(" " +
- " " +
+ " " +
" " +
- " " +
+ " " +
" " +
" ");
getProvider().authenticate(bob);
- }
-
-
-
+ }
+
@Test
public void externalUserServiceAndPasswordEncoderWork() throws Exception {
setContext(" " +