Skip to content

Commit 8a27419

Browse files
committed
kafka: allow disabling FAST in sarama client
Our sarama client has kerberos FAST negotiation turned on by default, but there are KDCs that can't handle FAST negotiation and will fail. There is an option to configure this on the sarama client, but we didn't expose it anywhere, so users couldn't get to it. This just adds an additional auth parameter to AuthConfig to expose that configuration option so users who need to shut off FAST are able to do so. Signed-off-by: John Kyros <[email protected]>
1 parent e582fd4 commit 8a27419

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ Here is an overview of all new **experimental** features:
7272
- **AWS CloudWatch Scaler**: Add support for ignoreNullValues ([#5352](https://github.com/kedacore/keda/issues/5352))
7373
- **GCP Scalers**: Added custom time horizon in GCP scalers ([#5778](https://github.com/kedacore/keda/issues/5778))
7474
- **GitHub Scaler**: Fixed pagination, fetching repository list ([#5738](https://github.com/kedacore/keda/issues/5738))
75+
- **Kafka**: Allow disabling FAST negotation when using Kerberos ([#6188](https://github.com/kedacore/keda/issues/6188))
7576
- **Kafka**: Fix logic to scale to zero on invalid offset even with earliest offsetResetPolicy ([#5689](https://github.com/kedacore/keda/issues/5689))
7677
- **RabbitMQ Scaler**: Add connection name for AMQP ([#5958](https://github.com/kedacore/keda/issues/5958))
7778
- TODO ([#XXX](https://github.com/kedacore/keda/issues/XXX))

pkg/scalers/kafka_scaler.go

+15
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ type kafkaMetadata struct {
8080
realm string
8181
kerberosConfigPath string
8282
kerberosServiceName string
83+
kerberosDisableFAST bool
8384

8485
// OAUTHBEARER
8586
tokenProvider kafkaSaslOAuthTokenProvider
@@ -408,6 +409,15 @@ func parseKerberosParams(config *scalersconfig.ScalerConfig, meta *kafkaMetadata
408409
meta.kerberosServiceName = strings.TrimSpace(config.AuthParams["kerberosServiceName"])
409410
}
410411

412+
meta.kerberosDisableFAST = false
413+
if val, ok := config.AuthParams["kerberosDisableFAST"]; ok {
414+
t, err := strconv.ParseBool(val)
415+
if err != nil {
416+
return fmt.Errorf("error parsing kerberosDisableFAST: %w", err)
417+
}
418+
meta.kerberosDisableFAST = t
419+
}
420+
411421
meta.saslType = mode
412422
return nil
413423
}
@@ -687,7 +697,12 @@ func getKafkaClientConfig(ctx context.Context, metadata kafkaMetadata) (*sarama.
687697
config.Net.SASL.GSSAPI.AuthType = sarama.KRB5_USER_AUTH
688698
config.Net.SASL.GSSAPI.Password = metadata.password
689699
}
700+
701+
if metadata.kerberosDisableFAST {
702+
config.Net.SASL.GSSAPI.DisablePAFXFAST = true
703+
}
690704
}
705+
691706
return config, nil
692707
}
693708

pkg/scalers/kafka_scaler_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,10 @@ var parseKafkaAuthParamsTestDataset = []parseKafkaAuthParamsTestData{
209209
{map[string]string{"sasl": "gssapi", "username": "admin", "password": "admin", "kerberosConfig": "<config>", "tls": "enable", "ca": "caaa", "cert": "ceert", "key": "keey"}, true, false},
210210
// failure, SASL GSSAPI/keytab + TLS missing username
211211
{map[string]string{"sasl": "gssapi", "keytab": "/path/to/keytab", "kerberosConfig": "<config>", "realm": "tst.com", "tls": "enable", "ca": "caaa", "cert": "ceert", "key": "keey"}, true, false},
212+
// success, SASL GSSAPI/disableFast
213+
{map[string]string{"sasl": "gssapi", "username": "admin", "keytab": "/path/to/keytab", "kerberosConfig": "<config>", "realm": "tst.com", "kerberosDisableFAST": "true"}, false, false},
214+
// failure, SASL GSSAPI/disableFast incorrect
215+
{map[string]string{"sasl": "gssapi", "username": "admin", "keytab": "/path/to/keytab", "kerberosConfig": "<config>", "realm": "tst.com", "kerberosDisableFAST": "notabool"}, true, false},
212216
}
213217
var parseAuthParamsTestDataset = []parseAuthParamsTestDataSecondAuthMethod{
214218
// success, SASL plaintext

0 commit comments

Comments
 (0)