Skip to content

Commit 4fdf649

Browse files
authored
kafka: allow disabling FAST in sarama client (#6189)
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 67358af commit 4fdf649

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
@@ -75,6 +75,7 @@ Here is an overview of all new **experimental** features:
7575
- **GCP Scalers**: Added custom time horizon in GCP scalers ([#5778](https://github.com/kedacore/keda/issues/5778))
7676
- **GitHub Scaler**: Fixed pagination, fetching repository list ([#5738](https://github.com/kedacore/keda/issues/5738))
7777
- **Grafana dashboard**: Fix dashboard to handle wildcard scaledObject variables ([#6214](https://github.com/kedacore/keda/issues/6214))
78+
- **Kafka**: Allow disabling FAST negotation when using Kerberos ([#6188](https://github.com/kedacore/keda/issues/6188))
7879
- **Kafka**: Fix logic to scale to zero on invalid offset even with earliest offsetResetPolicy ([#5689](https://github.com/kedacore/keda/issues/5689))
7980
- **RabbitMQ Scaler**: Add connection name for AMQP ([#5958](https://github.com/kedacore/keda/issues/5958))
8081
- **Selenium Scaler**: Add Support for Username and Password Authentication ([#6144](https://github.com/kedacore/keda/issues/6144))

pkg/scalers/kafka_scaler.go

+15
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ type kafkaMetadata struct {
8181
realm string
8282
kerberosConfigPath string
8383
kerberosServiceName string
84+
kerberosDisableFAST bool
8485

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

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

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)