Feature hawkbit uaa extension (#317)

* use UserPrincipal to determine tenant at runtime

Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>

* add hawkbit-uaa extension

Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>

* adapt WithSpringAuthorityRule with UserPrincipal for determine tenant

Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>

* fix String principal in DDI download resource

Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>

* merge the email to the UserPrincipal from the master manually

Signed-off-by: Michael Hirsch <michael.hirsch@bosch-si.com>

* Fixed some grammar issues and typos

Signed-off-by: Dominic Schabel <dominic.schabel@bosch-si.com>
This commit is contained in:
Michael Hirsch
2016-10-31 13:16:03 +01:00
committed by GitHub
parent b7f5bf3d79
commit 22272ba3c1
15 changed files with 654 additions and 59 deletions

View File

@@ -13,6 +13,7 @@ import java.util.ArrayList;
import org.eclipse.hawkbit.im.authentication.MultitenancyIndicator;
import org.eclipse.hawkbit.im.authentication.PermissionUtils;
import org.eclipse.hawkbit.im.authentication.TenantAwareAuthenticationDetails;
import org.eclipse.hawkbit.im.authentication.UserPrincipal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
@@ -52,7 +53,7 @@ public class InMemoryUserManagementConfiguration extends GlobalAuthenticationCon
@Bean
@ConditionalOnMissingBean
public UserDetailsService userDetailsService() {
final InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager(new ArrayList<>());
final InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserPrincipalDetailsManager();
inMemoryUserDetailsManager.setAuthenticationManager(null);
inMemoryUserDetailsManager.createUser(new User(securityProperties.getUser().getName(),
securityProperties.getUser().getPassword(), PermissionUtils.createAllAuthorityList()));
@@ -79,4 +80,19 @@ public class InMemoryUserManagementConfiguration extends GlobalAuthenticationCon
return result;
}
}
private static final class InMemoryUserPrincipalDetailsManager extends InMemoryUserDetailsManager {
private InMemoryUserPrincipalDetailsManager() {
super(new ArrayList<>());
}
@Override
public UserDetails loadUserByUsername(final String username) {
final UserDetails loadUserByUsername = super.loadUserByUsername(username);
return new UserPrincipal(loadUserByUsername.getUsername(), loadUserByUsername.getPassword(),
loadUserByUsername.getUsername(), loadUserByUsername.getUsername(),
loadUserByUsername.getUsername(), null, "DEFAULT", loadUserByUsername.getAuthorities());
}
}
}