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:
committed by
Kai Zimmermann
parent
59f674ca0e
commit
df23c4ef83
@@ -9,6 +9,7 @@
|
|||||||
package org.eclipse.hawkbit.autoconfigure.security;
|
package org.eclipse.hawkbit.autoconfigure.security;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.im.authentication.MultitenancyIndicator;
|
import org.eclipse.hawkbit.im.authentication.MultitenancyIndicator;
|
||||||
import org.eclipse.hawkbit.im.authentication.PermissionUtils;
|
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.config.annotation.authentication.configuration.GlobalAuthenticationConfigurerAdapter;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.userdetails.User;
|
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.UserDetails;
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
||||||
@@ -57,8 +59,14 @@ public class InMemoryUserManagementAutoConfiguration extends GlobalAuthenticatio
|
|||||||
UserDetailsService userDetailsService() {
|
UserDetailsService userDetailsService() {
|
||||||
final InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserPrincipalDetailsManager();
|
final InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserPrincipalDetailsManager();
|
||||||
inMemoryUserDetailsManager.setAuthenticationManager(null);
|
inMemoryUserDetailsManager.setAuthenticationManager(null);
|
||||||
inMemoryUserDetailsManager.createUser(new User(securityProperties.getUser().getName(),
|
final SecurityProperties.User user = securityProperties.getUser();
|
||||||
securityProperties.getUser().getPassword(), PermissionUtils.createAllAuthorityList()));
|
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;
|
return inMemoryUserDetailsManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user