feat: kafka启用krb5认证
This commit is contained in:
@@ -41,9 +41,9 @@ webServer:
|
|||||||
database:
|
database:
|
||||||
type: mysql
|
type: mysql
|
||||||
user: root
|
user: root
|
||||||
password: 1000omc@kp!
|
password: "root@1234"
|
||||||
host: 127.0.0.1
|
host: "192.168.5.59"
|
||||||
port: 33066
|
port: 3306
|
||||||
name: omc_db
|
name: omc_db
|
||||||
backup: d:/local.git/be.ems/restagent/database
|
backup: d:/local.git/be.ems/restagent/database
|
||||||
|
|
||||||
@@ -53,14 +53,14 @@ redis:
|
|||||||
# OMC系统使用库
|
# OMC系统使用库
|
||||||
default:
|
default:
|
||||||
port: 6379 # Redis port
|
port: 6379 # Redis port
|
||||||
host: "192.168.2.219" # Redis host
|
host: "192.168.5.59" # Redis host
|
||||||
password: "123456"
|
password: "redis@1234"
|
||||||
db: 10 # Redis db_num
|
db: 10 # Redis db_num
|
||||||
# UDM网元用户库
|
# UDM网元用户库
|
||||||
udmuser:
|
udmuser:
|
||||||
port: 6379 # Redis port
|
port: 6379 # Redis port
|
||||||
host: "192.168.2.219"
|
host: "192.168.13.140"
|
||||||
password: "123456"
|
password: ""
|
||||||
db: 0 # Redis db_num
|
db: 0 # Redis db_num
|
||||||
# 多个数据源时可以用这个指定默认的数据源
|
# 多个数据源时可以用这个指定默认的数据源
|
||||||
defaultDataSourceName: "default"
|
defaultDataSourceName: "default"
|
||||||
@@ -79,7 +79,7 @@ mml:
|
|||||||
|
|
||||||
# NE config
|
# NE config
|
||||||
ne:
|
ne:
|
||||||
user: root
|
user: agtuser
|
||||||
etcdir: /usr/local/etc
|
etcdir: /usr/local/etc
|
||||||
bindir: /usr/local/bin
|
bindir: /usr/local/bin
|
||||||
omcdir: /usr/local/omc
|
omcdir: /usr/local/omc
|
||||||
@@ -195,6 +195,16 @@ nmsCXY:
|
|||||||
- "192.168.5.59:19092"
|
- "192.168.5.59:19092"
|
||||||
- "192.168.5.59:29092"
|
- "192.168.5.59:29092"
|
||||||
- "192.168.5.59:39092"
|
- "192.168.5.59:39092"
|
||||||
|
# 启用 Kerberos 认证
|
||||||
|
krb5:
|
||||||
|
enable: false
|
||||||
|
config:
|
||||||
|
configPath: "/path/to/krb5.conf"
|
||||||
|
keyTabPath: "/path/to/keytab"
|
||||||
|
serviceName: "kafka"
|
||||||
|
realm: "EXAMPLE.COM"
|
||||||
|
username: "client"
|
||||||
|
|
||||||
# OSS配置
|
# OSS配置
|
||||||
oss:
|
oss:
|
||||||
bucketname: "omc-bucket"
|
bucketname: "omc-bucket"
|
||||||
|
|||||||
@@ -20,11 +20,18 @@ func InitConfig() {
|
|||||||
for _, v := range addrsArr {
|
for _, v := range addrsArr {
|
||||||
addrs = append(addrs, v.(string))
|
addrs = append(addrs, v.(string))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 实例
|
||||||
k := Kafka{
|
k := Kafka{
|
||||||
Addrs: addrs,
|
Addrs: addrs,
|
||||||
}
|
}
|
||||||
k.NewConfig()
|
k.NewConfig()
|
||||||
k.Config.Net.SASL.Enable = false
|
|
||||||
|
// 是否启用krb5认证
|
||||||
|
krb5Enable := config.Get("nmsCXY.kafka.krb5.enable").(bool)
|
||||||
|
if krb5Enable {
|
||||||
|
k.NewKerberosConfig()
|
||||||
|
}
|
||||||
KInitConm = k
|
KInitConm = k
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +41,7 @@ type Kafka struct {
|
|||||||
Config *sarama.Config
|
Config *sarama.Config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewConfig 默认基础配置
|
||||||
func (k *Kafka) NewConfig() {
|
func (k *Kafka) NewConfig() {
|
||||||
// 设置Kafka配置
|
// 设置Kafka配置
|
||||||
config := sarama.NewConfig()
|
config := sarama.NewConfig()
|
||||||
@@ -45,6 +53,35 @@ func (k *Kafka) NewConfig() {
|
|||||||
k.Config = config
|
k.Config = config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewKerberosConfig 认证krb5登录
|
||||||
|
func (k *Kafka) NewKerberosConfig() {
|
||||||
|
configPath := config.Get("nmsCXY.kafka.krb5.config.configPath").(string) // /path/to/krb5.conf
|
||||||
|
keyTabPath := config.Get("nmsCXY.kafka.krb5.config.keyTabPath").(string) // /path/to/keytab
|
||||||
|
serviceName := config.Get("nmsCXY.kafka.krb5.config.serviceName").(string) // kafka
|
||||||
|
realm := config.Get("nmsCXY.kafka.krb5.config.realm").(string) // EXAMPLE.COM
|
||||||
|
username := config.Get("nmsCXY.kafka.krb5.config.username").(string) // client
|
||||||
|
// krb5Enable := config.Get("nmsCXY.kafka.krb5.enable").(bool)
|
||||||
|
k.Config.Net.SASL.Enable = true
|
||||||
|
k.Config.Net.SASL.Mechanism = sarama.SASLTypeGSSAPI
|
||||||
|
k.Config.Net.SASL.GSSAPI = sarama.GSSAPIConfig{
|
||||||
|
AuthType: sarama.KRB5_KEYTAB_AUTH,
|
||||||
|
KerberosConfigPath: configPath,
|
||||||
|
KeyTabPath: keyTabPath,
|
||||||
|
ServiceName: serviceName,
|
||||||
|
Realm: realm,
|
||||||
|
Username: username,
|
||||||
|
}
|
||||||
|
|
||||||
|
client, err := sarama.NewKerberosClient(&k.Config.Net.SASL.GSSAPI)
|
||||||
|
if err != nil {
|
||||||
|
logger.Fatalf("kafka kerberos NewKerberosClient err %v", err)
|
||||||
|
}
|
||||||
|
err = client.Login()
|
||||||
|
if err != nil {
|
||||||
|
logger.Fatalf("kafka kerberos Login err %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MessageSyncSend 消息同步发送
|
// MessageSyncSend 消息同步发送
|
||||||
func (k *Kafka) MessageSyncSend(topic string, partition int32, msg string) (int32, int64, error) {
|
func (k *Kafka) MessageSyncSend(topic string, partition int32, msg string) (int32, int64, error) {
|
||||||
// 创建Kafka生产者
|
// 创建Kafka生产者
|
||||||
|
|||||||
Reference in New Issue
Block a user