add kakfa acl user

This commit is contained in:
许晓东
2021-09-01 21:15:14 +08:00
parent aeab25939d
commit 517af091af
4 changed files with 170 additions and 6 deletions

View File

@@ -15,6 +15,7 @@ import kafka.console.KafkaAclConsole;
import kafka.console.KafkaConfigConsole;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.admin.UserScramCredentialsDescription;
import org.apache.kafka.common.acl.AclBinding;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -68,10 +69,11 @@ public class AclServiceImpl implements AclService {
resultMap.put(k, map);
});
if (entry.isNull() || StringUtils.isNotBlank(entry.getPrincipal())) {
Set<String> userList = configConsole.getUserList(StringUtils.isNotBlank(entry.getPrincipal()) ? Collections.singletonList(entry.getPrincipal()) : null);
userList.forEach(u -> {
if (!resultMap.containsKey(u)) {
resultMap.put(u, Collections.emptyMap());
Map<String, UserScramCredentialsDescription> detailList = configConsole.getUserDetailList(StringUtils.isNotBlank(entry.getPrincipal()) ? Collections.singletonList(entry.getPrincipal()) : null);
detailList.values().forEach(u -> {
if (!resultMap.containsKey(u.name()) && !u.credentialInfos().isEmpty()) {
resultMap.put(u.name(), Collections.emptyMap());
}
});
}

View File

@@ -5,7 +5,7 @@ import java.util.Set
import java.util.concurrent.TimeUnit
import com.xuxd.kafka.console.config.KafkaConfig
import org.apache.kafka.clients.admin.{ScramCredentialInfo, ScramMechanism, UserScramCredentialDeletion, UserScramCredentialUpsertion}
import org.apache.kafka.clients.admin._
/**
* kafka-console-ui.
@@ -23,6 +23,12 @@ class KafkaConfigConsole(config: KafkaConfig) extends KafkaConsole(config: Kafka
}).asInstanceOf[Set[String]]
}
def getUserDetailList(users: util.List[String]): util.Map[String, UserScramCredentialsDescription] = {
withAdminClient({
adminClient => adminClient.describeUserScramCredentials(users).all().get()
}).asInstanceOf[util.Map[String, UserScramCredentialsDescription]]
}
def addOrUpdateUser(name: String, pass: String): Boolean = {
withAdminClient(adminClient => {
try {