Skip to content

Commit 5310631

Browse files
committed
Fix #34652: log warning when having duplicate users
1 parent 93add9a commit 5310631

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/auth/impl/SimpleAuthenticationBackend.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@
2222

2323
import eu.openanalytics.containerproxy.auth.IAuthenticationBackend;
2424
import eu.openanalytics.containerproxy.util.EnvironmentUtils;
25+
import org.slf4j.Logger;
26+
import org.slf4j.LoggerFactory;
2527
import org.springframework.core.env.Environment;
2628
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
2729
import org.springframework.security.config.annotation.authentication.configurers.provisioning.InMemoryUserDetailsManagerConfigurer;
2830
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2931

3032
import javax.inject.Inject;
33+
import java.util.HashSet;
3134
import java.util.List;
35+
import java.util.Set;
3236

3337
/**
3438
* Simple authentication method where user/password combinations are
@@ -40,6 +44,7 @@ public class SimpleAuthenticationBackend implements IAuthenticationBackend {
4044

4145
@Inject
4246
private Environment environment;
47+
private final Logger logger = LoggerFactory.getLogger(getClass());
4348

4449
@Override
4550
public String getName() {
@@ -59,13 +64,19 @@ public void configureHttpSecurity(HttpSecurity http) {
5964
@Override
6065
public void configureAuthenticationManagerBuilder(AuthenticationManagerBuilder auth) throws Exception {
6166
InMemoryUserDetailsManagerConfigurer<AuthenticationManagerBuilder> userDetails = auth.inMemoryAuthentication();
67+
Set<String> usernames = new HashSet<>();
6268
int i = 0;
6369
SimpleUser user = loadUser(i++);
6470
while (user != null) {
65-
userDetails
66-
.withUser(user.name)
67-
.password("{noop}" + user.password)
68-
.roles(user.roles);
71+
if (usernames.contains(user.name.toLowerCase())) {
72+
logger.warn("Ignoring duplicate user with username '{}' in 'proxy.users[{}]' (usernames are case-insensitive)", user.name, i - 1);
73+
} else {
74+
userDetails
75+
.withUser(user.name)
76+
.password("{noop}" + user.password)
77+
.roles(user.roles);
78+
usernames.add(user.name.toLowerCase());
79+
}
6980
user = loadUser(i++);
7081
}
7182
}
@@ -75,7 +86,6 @@ private SimpleUser loadUser(int index) {
7586
if (userName == null) return null;
7687
String password = environment.getProperty(String.format("proxy.users[%d].password", index));
7788

78-
// method 1: single property with comma seperated groups
7989
List<String> groups = EnvironmentUtils.readList(environment, String.format("proxy.users[%d].groups", index));
8090
if (groups != null) {
8191
return new SimpleUser(userName, password, groups.toArray(new String[0]));

0 commit comments

Comments
 (0)