Skip to content

Commit d85a5c1

Browse files
committed
add kerberos domain name config for gssapi sasl mechanism handshake
1 parent 9ac3cb1 commit d85a5c1

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

kafka/client_async.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,8 @@ class KafkaClient(object):
145145
Default: None
146146
sasl_kerberos_service_name (str): Service name to include in GSSAPI
147147
sasl mechanism handshake. Default: 'kafka'
148+
kerberos_domain_name (str): kerberos domain name to use in GSSAPI
149+
sasl mechanism handshake. Default: one of bootstrap servers
148150
"""
149151

150152
DEFAULT_CONFIG = {
@@ -179,6 +181,7 @@ class KafkaClient(object):
179181
'sasl_plain_username': None,
180182
'sasl_plain_password': None,
181183
'sasl_kerberos_service_name': 'kafka',
184+
'kerberos_domain_name': None
182185
}
183186

184187
def __init__(self, **configs):

kafka/conn.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ class BrokerConnection(object):
176176
Default: None
177177
sasl_kerberos_service_name (str): Service name to include in GSSAPI
178178
sasl mechanism handshake. Default: 'kafka'
179+
kerberos_domain_name (str): kerberos domain name to use in GSSAPI
180+
sasl mechanism handshake. Default: one of bootstrap servers
179181
"""
180182

181183
DEFAULT_CONFIG = {
@@ -206,7 +208,8 @@ class BrokerConnection(object):
206208
'sasl_mechanism': 'PLAIN',
207209
'sasl_plain_username': None,
208210
'sasl_plain_password': None,
209-
'sasl_kerberos_service_name': 'kafka'
211+
'sasl_kerberos_service_name': 'kafka',
212+
'kerberos_domain_name': None
210213
}
211214
SECURITY_PROTOCOLS = ('PLAINTEXT', 'SSL', 'SASL_PLAINTEXT', 'SASL_SSL')
212215
SASL_MECHANISMS = ('PLAIN', 'GSSAPI')
@@ -567,7 +570,7 @@ def _try_authenticate_plain(self, future):
567570
return future.success(True)
568571

569572
def _try_authenticate_gssapi(self, future):
570-
auth_id = self.config['sasl_kerberos_service_name'] + '@' + self.host
573+
auth_id = self.config['sasl_kerberos_service_name'] + '@' + (self.config['kerberos_domain_name'] or self.host)
571574
gssapi_name = gssapi.Name(
572575
auth_id,
573576
name_type=gssapi.NameType.hostbased_service

kafka/consumer/group.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ class KafkaConsumer(six.Iterator):
240240
Default: None
241241
sasl_kerberos_service_name (str): Service name to include in GSSAPI
242242
sasl mechanism handshake. Default: 'kafka'
243+
kerberos_domain_name (str): kerberos domain name to use in GSSAPI
244+
sasl mechanism handshake. Default: one of bootstrap servers
243245
244246
Note:
245247
Configuration parameters are described in more detail at
@@ -298,7 +300,8 @@ class KafkaConsumer(six.Iterator):
298300
'sasl_mechanism': None,
299301
'sasl_plain_username': None,
300302
'sasl_plain_password': None,
301-
'sasl_kerberos_service_name': 'kafka'
303+
'sasl_kerberos_service_name': 'kafka',
304+
'kerberos_domain_name': None
302305
}
303306
DEFAULT_SESSION_TIMEOUT_MS_0_9 = 30000
304307

kafka/producer/kafka.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,8 @@ class KafkaProducer(object):
270270
Default: None
271271
sasl_kerberos_service_name (str): Service name to include in GSSAPI
272272
sasl mechanism handshake. Default: 'kafka'
273+
kerberos_domain_name (str): kerberos domain name to use in GSSAPI
274+
sasl mechanism handshake. Default: one of bootstrap servers
273275
274276
Note:
275277
Configuration parameters are described in more detail at
@@ -318,7 +320,8 @@ class KafkaProducer(object):
318320
'sasl_mechanism': None,
319321
'sasl_plain_username': None,
320322
'sasl_plain_password': None,
321-
'sasl_kerberos_service_name': 'kafka'
323+
'sasl_kerberos_service_name': 'kafka',
324+
'kerberos_domain_name': None
322325
}
323326

324327
_COMPRESSORS = {

0 commit comments

Comments
 (0)