From a0f98529e655050f82875eead81f3045e42c96b3 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 31 Oct 2016 23:43:00 +0100 Subject: [PATCH] fix determination of current tenant security context (#333) Signed-off-by: Michael Hirsch --- .../hawkbit/security/SecurityContextTenantAware.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java index 8e0d21f8f..596bf3b5d 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java @@ -38,10 +38,10 @@ public class SecurityContextTenantAware implements TenantAware { final SecurityContext context = SecurityContextHolder.getContext(); if (context.getAuthentication() != null) { final Object principal = context.getAuthentication().getPrincipal(); - if (principal instanceof UserPrincipal) { - return ((UserPrincipal) principal).getTenant(); - } else if (context.getAuthentication().getDetails() instanceof TenantAwareAuthenticationDetails) { + if (context.getAuthentication().getDetails() instanceof TenantAwareAuthenticationDetails) { return ((TenantAwareAuthenticationDetails) context.getAuthentication().getDetails()).getTenant(); + }else if (principal instanceof UserPrincipal) { + return ((UserPrincipal) principal).getTenant(); } } return null; @@ -80,10 +80,13 @@ public class SecurityContextTenantAware implements TenantAware { private final UserPrincipal systemPrincipal; + private TenantAwareAuthenticationDetails tenantAwareAuthenticationDetails; + private AuthenticationDelegate(final Authentication delegate, final String tenant) { this.delegate = delegate; this.systemPrincipal = new UserPrincipal(SYSTEM_USER, SYSTEM_USER, SYSTEM_USER, SYSTEM_USER, SYSTEM_USER, null, tenant, SYSTEM_AUTHORITIES); + tenantAwareAuthenticationDetails = new TenantAwareAuthenticationDetails(tenant, false); } @Override @@ -123,7 +126,7 @@ public class SecurityContextTenantAware implements TenantAware { @Override public Object getDetails() { - return (delegate != null) ? delegate.getDetails() : null; + return tenantAwareAuthenticationDetails; } @Override