Skip to content

Commit ad1c65e

Browse files
committed
BE: RBAC: LDAP: Implement user subject type for LDAP & AD. Fixes #730
1 parent 50bae9f commit ad1c65e

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

api/src/main/java/io/kafbat/ui/service/rbac/extractor/RbacActiveDirectoryAuthoritiesExtractor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ public Collection<? extends GrantedAuthority> getGrantedAuthorities(DirContextOp
3636
.filter(r -> r.getSubjects()
3737
.stream()
3838
.filter(subject -> subject.getProvider().equals(Provider.LDAP_AD))
39-
.filter(subject -> subject.getType().equals("group"))
40-
.anyMatch(subject -> adGroups.contains(subject.getValue()))
39+
.anyMatch(subject -> switch (subject.getType()) {
40+
case "user" -> username.equalsIgnoreCase(subject.getValue());
41+
case "group" -> adGroups.contains(subject.getValue());
42+
default -> false;
43+
})
4144
)
4245
.map(Role::getName)
4346
.peek(role -> log.trace("Mapped role [{}] for user [{}]", role, username))

api/src/main/java/io/kafbat/ui/service/rbac/extractor/RbacLdapAuthoritiesExtractor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ protected Set<GrantedAuthority> getAdditionalRoles(DirContextOperations user, St
3838
.filter(r -> r.getSubjects()
3939
.stream()
4040
.filter(subject -> subject.getProvider().equals(Provider.LDAP))
41-
.filter(subject -> subject.getType().equals("group"))
42-
.anyMatch(subject -> ldapGroups.contains(subject.getValue()))
41+
.anyMatch(subject -> switch (subject.getType()) {
42+
case "user" -> username.equalsIgnoreCase(subject.getValue());
43+
case "group" -> ldapGroups.contains(subject.getValue());
44+
default -> false;
45+
})
4346
)
4447
.map(Role::getName)
4548
.peek(role -> log.trace("Mapped role [{}] for user [{}]", role, username))

0 commit comments

Comments
 (0)