Skip to content

Commit c102792

Browse files
committed
fixup! Fixed provectus#4312 the issue where audit was not working
1 parent 9788bb2 commit c102792

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/audit/AuditService.java

+20-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.google.common.annotations.VisibleForTesting;
77
import com.provectus.kafka.ui.config.ClustersProperties;
88
import com.provectus.kafka.ui.config.auth.AuthenticatedUser;
9+
import com.provectus.kafka.ui.config.auth.RbacUser;
910
import com.provectus.kafka.ui.model.KafkaCluster;
1011
import com.provectus.kafka.ui.model.rbac.AccessContext;
1112
import com.provectus.kafka.ui.service.AdminClientService;
@@ -30,6 +31,7 @@
3031
import org.springframework.beans.factory.annotation.Autowired;
3132
import org.springframework.security.core.GrantedAuthority;
3233
import org.springframework.security.core.context.SecurityContext;
34+
import org.springframework.security.core.userdetails.UserDetails;
3335
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
3436
import org.springframework.stereotype.Service;
3537
import reactor.core.publisher.Mono;
@@ -196,18 +198,30 @@ private Mono<AuthenticatedUser> extractUser(Signal<?> sig) {
196198
Object key = SecurityContext.class;
197199
if (sig.getContextView().hasKey(key)) {
198200
return sig.getContextView().<Mono<SecurityContext>>get(key)
199-
.map(context -> context.getAuthentication().getPrincipal())
200-
.cast(OidcUser.class)
201-
.map(user -> {
202-
var roles = user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toSet());
203-
return new AuthenticatedUser(user.getName(), roles);
204-
})
201+
.map(AuditService::createAuthenticatedUser)
205202
.switchIfEmpty(NO_AUTH_USER);
206203
} else {
207204
return NO_AUTH_USER;
208205
}
209206
}
210207

208+
private static AuthenticatedUser createAuthenticatedUser(SecurityContext context) {
209+
var principal = context.getAuthentication().getPrincipal();
210+
if (principal instanceof RbacUser user) {
211+
return new AuthenticatedUser(user.name(), user.groups());
212+
} else if (principal instanceof OidcUser user) {
213+
return new AuthenticatedUser(
214+
user.getName(),
215+
user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toSet()));
216+
} else if (principal instanceof UserDetails user) {
217+
return new AuthenticatedUser(
218+
user.getUsername(),
219+
user.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toSet()));
220+
} else {
221+
return null;
222+
}
223+
}
224+
211225
private void sendAuditRecord(AccessContext ctx, AuthenticatedUser user) {
212226
sendAuditRecord(ctx, user, null);
213227
}

0 commit comments

Comments
 (0)