Skip to content

Commit da40f1d

Browse files
committed
Add ExternalCredentials support
When cert-based auth is enabled in RMQ, it is possible to use CN from client-certificate as a username. However to use that feature you need ExternalCredentials instead of PlainCredneitals additional field in configuration was added rabbitmq_external_creds: 0/1
1 parent 36784d6 commit da40f1d

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

beaver/transports/rabbitmq_transport.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22
from Queue import Queue
33
import pika
4+
import pika.credentials
45
import ssl
56
from threading import Thread
67
import time
@@ -18,7 +19,7 @@ def __init__(self, beaver_config, logger=None):
1819
config_to_store = [
1920
'key', 'exchange', 'username', 'password', 'host', 'port', 'vhost',
2021
'queue', 'queue_durable', 'ha_queue', 'exchange_type', 'exchange_durable',
21-
'ssl', 'ssl_key', 'ssl_cert', 'ssl_cacert', 'timeout', 'delivery_mode'
22+
'ssl', 'ssl_key', 'ssl_cert', 'ssl_cacert', 'timeout', 'delivery_mode', 'external_creds'
2223
]
2324

2425
for key in config_to_store:
@@ -126,10 +127,13 @@ def _connection_start(self):
126127
self._logger.error('RabbitMQ: Failed to connect: %s', e)
127128

128129
def _connect(self):
129-
credentials = pika.PlainCredentials(
130-
self._rabbitmq_config['username'],
131-
self._rabbitmq_config['password']
132-
)
130+
if self._rabbitmq_config['external_creds']:
131+
credentials = pika.credentials.ExternalCredentials()
132+
else:
133+
credentials = pika.PlainCredentials(
134+
self._rabbitmq_config['username'],
135+
self._rabbitmq_config['password']
136+
)
133137
ssl_options = {
134138
'keyfile': self._rabbitmq_config['ssl_key'],
135139
'certfile': self._rabbitmq_config['ssl_cert'],

0 commit comments

Comments
 (0)