2017-03-23 1 views
1

Ich habe einen Kafka10-Cluster mit SASL_SSL (Authentifizierung (JAAS) und Autorisierung) aktiviert. Verbindung über SASL mit dem Java-Client mit den folgenden Requisiten möglich.Kafka 10 - Python-Client mit Authentifizierung und Autorisierung

ssl.keystore.location="client_keystore.jks" 
ssl.keystore.password="password" 
ssl.truststore.location="clienttruststore" 
ssl.truststore.password="password" 

und die JAAS-Konf-Datei über die JVM-Parameter übergeben.

-Djava.security.auth.login.config=/path/to/client_jaas.conf 

Gibt es trotzdem das gleiche mit dem Python-Client zu erreichen?

Antwort

2

Ich habe IBM Message Hub verbindet das ist kafka unter der Haube wie dies mit dem Code:

from kafka import KafkaProducer 
from kafka.errors import KafkaError 
import ssl 

sasl_mechanism = 'PLAIN' 
security_protocol = 'SASL_SSL' 

# Create a new context using system defaults, disable all but TLS1.2 
context = ssl.create_default_context() 
context.options &= ssl.OP_NO_TLSv1 
context.options &= ssl.OP_NO_TLSv1_1 

producer = KafkaProducer(bootstrap_servers = app.config['KAFKA_BROKERS_SASL'], 
         sasl_plain_username = app.config['KAFKA_USERNAME'], 
         sasl_plain_password = app.config['KAFKA_PASSWORD'], 
         security_protocol = security_protocol, 
         ssl_context = context, 
         sasl_mechanism = sasl_mechanism, 
         api_version = (0,10), 
         retries=5) 

def send_message(message): 

    try: 
     producer.send(app.config['KAFKA_TOPIC'], message.encode('utf-8')) 
    except: 
     print("Unexpected error:", sys.exc_info()[0]) 
     raise 
Verwandte Themen