Skip to content

Commit 48398c2

Browse files
authored
Added support for new Argon2PasswordEncoder (#902)
1 parent 99dca1b commit 48398c2

File tree

1 file changed

+28
-25
lines changed

1 file changed

+28
-25
lines changed

plugin/src/main/groovy/grails/plugin/springsecurity/SpringSecurityCoreGrailsPlugin.groovy

+28-25
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ import org.springframework.security.core.context.SecurityContextHolder as SCH
8181
import org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper
8282
import org.springframework.security.core.userdetails.cache.EhCacheBasedUserCache
8383
import org.springframework.security.core.userdetails.cache.NullUserCache
84+
import org.springframework.security.crypto.argon2.Argon2PasswordEncoder
8485
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
8586
import org.springframework.security.crypto.password.DelegatingPasswordEncoder
8687
import org.springframework.security.crypto.password.LdapShaPasswordEncoder
@@ -145,6 +146,7 @@ class SpringSecurityCoreGrailsPlugin extends Plugin {
145146
public static final String ENCODING_ID_NOOP = "noop"
146147
public static final String ENCODING_ID_PBKDF2 = "pbkdf2"
147148
public static final String ENCODING_ID_SCRYPT = "scrypt"
149+
public static final String ENCODING_ID_ARGON2 = "argon2"
148150
public static final String ENCODING_ID_SHA1 = "SHA-1"
149151
public static final String ENCODING_IDSHA256 = "SHA-256"
150152

@@ -412,8 +414,8 @@ class SpringSecurityCoreGrailsPlugin extends Plugin {
412414
String securityConfigType = SpringSecurityUtils.securityConfigType
413415
log.trace "Using security config type '{}'", securityConfigType
414416
if (securityConfigType != 'Annotation' &&
415-
securityConfigType != 'Requestmap' &&
416-
securityConfigType != 'InterceptUrlMap') {
417+
securityConfigType != 'Requestmap' &&
418+
securityConfigType != 'InterceptUrlMap') {
417419

418420
String message = """
419421
ERROR: the 'securityConfigType' property must be one of
@@ -513,7 +515,7 @@ to default to 'Annotation'; setting value to 'Annotation'
513515

514516
authenticationEventPublisher(classFor('authenticationEventPublisher', DefaultAuthenticationEventPublisher)) {
515517
additionalExceptionMappings =
516-
([(NoStackUsernameNotFoundException.name): AuthenticationFailureBadCredentialsEvent.name] as Properties)
518+
([(NoStackUsernameNotFoundException.name): AuthenticationFailureBadCredentialsEvent.name] as Properties)
517519
}
518520
}
519521
else {
@@ -703,7 +705,7 @@ to default to 'Annotation'; setting value to 'Annotation'
703705

704706
// build handlers list here to give dependent plugins a chance to register some
705707
def logoutHandlerNames = (conf.logout.handlerNames ?: SpringSecurityUtils.logoutHandlerNames) +
706-
(conf.logout.additionalHandlerNames ?: [])
708+
(conf.logout.additionalHandlerNames ?: [])
707709
applicationContext.logoutHandlers.clear()
708710
applicationContext.logoutHandlers.addAll createBeanList(logoutHandlerNames)
709711
log.trace 'LogoutHandlers: {}', applicationContext.logoutHandlers
@@ -766,8 +768,8 @@ to default to 'Annotation'; setting value to 'Annotation'
766768
private void initializeFromAnnotations(conf) {
767769
AnnotationFilterInvocationDefinition afid = applicationContext.objectDefinitionSource
768770
afid.initialize conf.controllerAnnotations.staticRules,
769-
applicationContext.grailsUrlMappingsHolder, grailsApplication.controllerClasses,
770-
grailsApplication.domainClasses
771+
applicationContext.grailsUrlMappingsHolder, grailsApplication.controllerClasses,
772+
grailsApplication.domainClasses
771773
}
772774

773775
private createRefList = { names -> names.collect { name -> ref(name) } }
@@ -1100,30 +1102,31 @@ to default to 'Annotation'; setting value to 'Annotation'
11001102
}
11011103

11021104

1103-
Map<String, PasswordEncoder> idToPasswordEncoder(ConfigObject conf) {
1105+
static Map<String, PasswordEncoder> idToPasswordEncoder(ConfigObject conf) {
11041106

1105-
MessageDigestPasswordEncoder messsageDigestPasswordEncoderMD5 = new MessageDigestPasswordEncoder(ENCODING_ID_MD5)
1106-
messsageDigestPasswordEncoderMD5.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1107-
messsageDigestPasswordEncoderMD5.iterations = conf.password.hash.iterations // 10000
1107+
MessageDigestPasswordEncoder messageDigestPasswordEncoderMD5 = new MessageDigestPasswordEncoder(ENCODING_ID_MD5)
1108+
messageDigestPasswordEncoderMD5.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1109+
messageDigestPasswordEncoderMD5.iterations = conf.password.hash.iterations // 10000
11081110

1109-
MessageDigestPasswordEncoder messsageDigestPasswordEncoderSHA1 = new MessageDigestPasswordEncoder(ENCODING_ID_SHA1)
1110-
messsageDigestPasswordEncoderSHA1.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1111-
messsageDigestPasswordEncoderSHA1.iterations = conf.password.hash.iterations // 10000
1111+
MessageDigestPasswordEncoder messageDigestPasswordEncoderSHA1 = new MessageDigestPasswordEncoder(ENCODING_ID_SHA1)
1112+
messageDigestPasswordEncoderSHA1.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1113+
messageDigestPasswordEncoderSHA1.iterations = conf.password.hash.iterations // 10000
11121114

1113-
MessageDigestPasswordEncoder messsageDigestPasswordEncoderSHA256 = new MessageDigestPasswordEncoder(ENCODING_IDSHA256)
1114-
messsageDigestPasswordEncoderSHA256.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1115-
messsageDigestPasswordEncoderSHA256.iterations = conf.password.hash.iterations // 10000
1115+
MessageDigestPasswordEncoder messageDigestPasswordEncoderSHA256 = new MessageDigestPasswordEncoder(ENCODING_IDSHA256)
1116+
messageDigestPasswordEncoderSHA256.encodeHashAsBase64 = conf.password.encodeHashAsBase64 // false
1117+
messageDigestPasswordEncoderSHA256.iterations = conf.password.hash.iterations // 10000
11161118

11171119
int strength = conf.password.bcrypt.logrounds
11181120
[(ENCODING_ID_BCRYPT): new BCryptPasswordEncoder(strength),
1119-
(ENCODING_ID_LDAP): new LdapShaPasswordEncoder(),
1120-
(ENCODING_ID_MD4): new Md4PasswordEncoder(),
1121-
(ENCODING_ID_MD5): messsageDigestPasswordEncoderMD5,
1122-
(ENCODING_ID_NOOP): NoOpPasswordEncoder.getInstance(),
1123-
(ENCODING_ID_PBKDF2): new Pbkdf2PasswordEncoder(),
1124-
(ENCODING_ID_SCRYPT): new SCryptPasswordEncoder(),
1125-
(ENCODING_ID_SHA1): messsageDigestPasswordEncoderSHA1,
1126-
(ENCODING_IDSHA256): messsageDigestPasswordEncoderSHA256,
1127-
"sha256": new StandardPasswordEncoder()]
1121+
(ENCODING_ID_LDAP): new LdapShaPasswordEncoder(),
1122+
(ENCODING_ID_MD4): new Md4PasswordEncoder(),
1123+
(ENCODING_ID_MD5): messageDigestPasswordEncoderMD5,
1124+
(ENCODING_ID_NOOP): NoOpPasswordEncoder.getInstance(),
1125+
(ENCODING_ID_PBKDF2): new Pbkdf2PasswordEncoder(),
1126+
(ENCODING_ID_SCRYPT): new SCryptPasswordEncoder(),
1127+
(ENCODING_ID_ARGON2): new Argon2PasswordEncoder(),
1128+
(ENCODING_ID_SHA1): messageDigestPasswordEncoderSHA1,
1129+
(ENCODING_IDSHA256): messageDigestPasswordEncoderSHA256,
1130+
"sha256": new StandardPasswordEncoder()]
11281131
}
11291132
}

0 commit comments

Comments
 (0)