Kafka (sarama) authentication with user/pass (#6291)

master
Annanay Agarwal 6 years ago committed by kannappanr
parent 67d8396af4
commit 7cb87f863e
  1. 12
      cmd/admin-handlers_test.go
  2. 12
      docs/config/config.sample.json
  3. 24
      pkg/event/target/kafka.go

@ -101,7 +101,17 @@ var (
"1": { "1": {
"enable": false, "enable": false,
"brokers": null, "brokers": null,
"topic": "" "topic": "",
"tls" : {
"enable" : false,
"skipVerify" : false,
"clientAuth" : 0
},
"sasl" : {
"enable" : false,
"username" : "",
"password" : ""
}
} }
}, },
"mqtt": { "mqtt": {

@ -91,7 +91,17 @@
"1": { "1": {
"enable": true, "enable": true,
"brokers": ["localhost:9092"], "brokers": ["localhost:9092"],
"topic": "bucketevents" "topic": "bucketevents",
"tls" : {
"enable" : true,
"skipVerify" : false,
"clientAuth" : 0
},
"sasl" : {
"enable" : true,
"username" : "kafka",
"password" : "kafkapasswd"
}
} }
}, },
"webhook": { "webhook": {

@ -17,6 +17,7 @@
package target package target
import ( import (
"crypto/tls"
"encoding/json" "encoding/json"
"errors" "errors"
"net/url" "net/url"
@ -32,6 +33,16 @@ type KafkaArgs struct {
Enable bool `json:"enable"` Enable bool `json:"enable"`
Brokers []xnet.Host `json:"brokers"` Brokers []xnet.Host `json:"brokers"`
Topic string `json:"topic"` Topic string `json:"topic"`
TLS struct {
Enable bool `json:"enable"`
SkipVerify bool `json:"skipVerify"`
ClientAuth tls.ClientAuthType `json:"clientAuth"`
} `json:"tls"`
SASL struct {
Enable bool `json:"enable"`
User string `json:"username"`
Password string `json:"password"`
} `json:"sasl"`
} }
// Validate KafkaArgs fields // Validate KafkaArgs fields
@ -90,9 +101,20 @@ func (target *KafkaTarget) Close() error {
return target.producer.Close() return target.producer.Close()
} }
// NewKafkaTarget - creates new Kafka target. // NewKafkaTarget - creates new Kafka target with auth credentials.
func NewKafkaTarget(id string, args KafkaArgs) (*KafkaTarget, error) { func NewKafkaTarget(id string, args KafkaArgs) (*KafkaTarget, error) {
config := sarama.NewConfig() config := sarama.NewConfig()
config.Net.SASL.User = args.SASL.User
config.Net.SASL.Password = args.SASL.Password
config.Net.SASL.Enable = args.SASL.Enable
config.Net.TLS.Enable = args.TLS.Enable
tlsConfig := &tls.Config{
ClientAuth: args.TLS.ClientAuth,
}
config.Net.TLS.Config = tlsConfig
config.Producer.RequiredAcks = sarama.WaitForAll config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Retry.Max = 10 config.Producer.Retry.Max = 10
config.Producer.Return.Successes = true config.Producer.Return.Successes = true

Loading…
Cancel
Save