In-memory user management should not ignore user roles configured via Spring (#794)

* Fix hawkBit UserDetailsService bean to honor the configured roles

Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>

* Fix Sonar issues

Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
This commit is contained in:
Stefan Behl
2019-02-01 14:18:38 +01:00
committed by Kai Zimmermann
parent 59f674ca0e
commit df23c4ef83

View File

@@ -9,6 +9,7 @@
package org.eclipse.hawkbit.autoconfigure.security;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.hawkbit.im.authentication.MultitenancyIndicator;
import org.eclipse.hawkbit.im.authentication.PermissionUtils;
@@ -24,6 +25,7 @@ import org.springframework.security.config.annotation.authentication.builders.Au
import org.springframework.security.config.annotation.authentication.configuration.GlobalAuthenticationConfigurerAdapter;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.User.UserBuilder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@@ -57,8 +59,14 @@ public class InMemoryUserManagementAutoConfiguration extends GlobalAuthenticatio
UserDetailsService userDetailsService() {
final InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserPrincipalDetailsManager();
inMemoryUserDetailsManager.setAuthenticationManager(null);
inMemoryUserDetailsManager.createUser(new User(securityProperties.getUser().getName(),
securityProperties.getUser().getPassword(), PermissionUtils.createAllAuthorityList()));
final SecurityProperties.User user = securityProperties.getUser();
final UserBuilder userBuilder = User.builder().username(user.getName()).password(user.getPassword())
.authorities(PermissionUtils.createAllAuthorityList());
final List<String> roles = user.getRoles();
if (!roles.isEmpty()) {
userBuilder.roles(roles.toArray(new String[roles.size()]));
}
inMemoryUserDetailsManager.createUser(userBuilder.build());
return inMemoryUserDetailsManager;
}