diff --git a/pom.xml b/pom.xml
index dd649d92..846eecc8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,6 +168,12 @@
2.18.2
+
+
+ org.bouncycastle
+ bcprov-jdk18on
+ 1.78.1
+
keeptime-${project.version}
diff --git a/src/main/java/de/doubleslash/keeptime/common/DefaultPasswordEncoder.java b/src/main/java/de/doubleslash/keeptime/common/DefaultPasswordEncoder.java
new file mode 100644
index 00000000..060c2017
--- /dev/null
+++ b/src/main/java/de/doubleslash/keeptime/common/DefaultPasswordEncoder.java
@@ -0,0 +1,13 @@
+package de.doubleslash.keeptime.common;
+
+import org.springframework.security.crypto.argon2.Argon2PasswordEncoder;
+
+public class DefaultPasswordEncoder {
+
+ private static Argon2PasswordEncoder passwordEncoder = new Argon2PasswordEncoder(16, 32, 4, 128000, 10);
+
+ public static final Argon2PasswordEncoder getPasswordEncoder() {
+ return DefaultPasswordEncoder.passwordEncoder;
+ }
+
+}
diff --git a/src/main/java/de/doubleslash/keeptime/rest/SecurityConfiguration.java b/src/main/java/de/doubleslash/keeptime/rest/SecurityConfiguration.java
index b40a5ae2..2f82a51d 100644
--- a/src/main/java/de/doubleslash/keeptime/rest/SecurityConfiguration.java
+++ b/src/main/java/de/doubleslash/keeptime/rest/SecurityConfiguration.java
@@ -24,8 +24,11 @@
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
+import de.doubleslash.keeptime.common.DefaultPasswordEncoder;
+
@Configuration
@EnableWebSecurity
public class SecurityConfiguration {
@@ -39,4 +42,9 @@ public SecurityFilterChain filterChain(final HttpSecurity http) throws Exception
return http.build();
}
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return DefaultPasswordEncoder.getPasswordEncoder();
+ }
}
diff --git a/src/main/java/de/doubleslash/keeptime/view/SettingsController.java b/src/main/java/de/doubleslash/keeptime/view/SettingsController.java
index 4167cd28..b3cf9900 100644
--- a/src/main/java/de/doubleslash/keeptime/view/SettingsController.java
+++ b/src/main/java/de/doubleslash/keeptime/view/SettingsController.java
@@ -43,6 +43,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import de.doubleslash.keeptime.ApplicationProperties;
@@ -758,12 +759,15 @@ private void handleApiOn() {
String username = authName.getText();
String password = authPassword.getText();
+ PasswordEncoder passwordEncoder = DefaultPasswordEncoder.getPasswordEncoder();
+ String encodedPassword = passwordEncoder.encode(password);
+
Map propertiesToUpdate = new HashMap<>();
propertiesToUpdate.put("spring.main.web-application-type", "");
propertiesToUpdate.put("server.port", authPort.getText());
propertiesToUpdate.put("api", "ON");
propertiesToUpdate.put("spring.security.user.name", username);
- propertiesToUpdate.put("spring.security.user.password", password);
+ propertiesToUpdate.put("spring.security.user.password", encodedPassword);
propertyWrite(propertiesToUpdate);
}