Skip to content

Commit ac0aec8

Browse files
committed
#198: Add Argon2 password encoding.
1 parent b6ded44 commit ac0aec8

4 files changed

Lines changed: 32 additions & 1 deletion

File tree

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,12 @@
168168
<version>2.18.2</version>
169169
</dependency>
170170

171+
<!-- for Argon2PasswordEncoder -->
172+
<dependency>
173+
<groupId>org.bouncycastle</groupId>
174+
<artifactId>bcprov-jdk18on</artifactId>
175+
<version>1.78.1</version> <!-- or latest -->
176+
</dependency>
171177
</dependencies>
172178
<build>
173179
<finalName>keeptime-${project.version}</finalName>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package de.doubleslash.keeptime.common;
2+
3+
import org.springframework.security.crypto.argon2.Argon2PasswordEncoder;
4+
5+
public class DefaultPasswordEncoder {
6+
7+
private static Argon2PasswordEncoder passwordEncoder = new Argon2PasswordEncoder(16, 32, 4, 128000, 10);
8+
9+
public static final Argon2PasswordEncoder getPasswordEncoder() {
10+
return DefaultPasswordEncoder.passwordEncoder;
11+
}
12+
13+
}

src/main/java/de/doubleslash/keeptime/rest/SecurityConfiguration.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@
2424
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
2525
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
2626
import org.springframework.security.config.http.SessionCreationPolicy;
27+
import org.springframework.security.crypto.password.PasswordEncoder;
2728
import org.springframework.security.web.SecurityFilterChain;
2829

30+
import de.doubleslash.keeptime.common.DefaultPasswordEncoder;
31+
2932
@Configuration
3033
@EnableWebSecurity
3134
public class SecurityConfiguration {
@@ -39,4 +42,9 @@ public SecurityFilterChain filterChain(final HttpSecurity http) throws Exception
3942

4043
return http.build();
4144
}
45+
46+
@Bean
47+
public PasswordEncoder passwordEncoder() {
48+
return DefaultPasswordEncoder.getPasswordEncoder();
49+
}
4250
}

src/main/java/de/doubleslash/keeptime/view/SettingsController.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.slf4j.Logger;
4444
import org.slf4j.LoggerFactory;
4545
import org.springframework.beans.factory.annotation.Autowired;
46+
import org.springframework.security.crypto.password.PasswordEncoder;
4647
import org.springframework.stereotype.Component;
4748

4849
import de.doubleslash.keeptime.ApplicationProperties;
@@ -758,12 +759,15 @@ private void handleApiOn() {
758759
String username = authName.getText();
759760
String password = authPassword.getText();
760761

762+
PasswordEncoder passwordEncoder = DefaultPasswordEncoder.getPasswordEncoder();
763+
String encodedPassword = passwordEncoder.encode(password);
764+
761765
Map<String, String> propertiesToUpdate = new HashMap<>();
762766
propertiesToUpdate.put("spring.main.web-application-type", "");
763767
propertiesToUpdate.put("server.port", authPort.getText());
764768
propertiesToUpdate.put("api", "ON");
765769
propertiesToUpdate.put("spring.security.user.name", username);
766-
propertiesToUpdate.put("spring.security.user.password", password);
770+
propertiesToUpdate.put("spring.security.user.password", encodedPassword);
767771

768772
propertyWrite(propertiesToUpdate);
769773
}

0 commit comments

Comments
 (0)