Skip to content
Snippets Groups Projects
Unverified Commit 61bb9bc6 authored by Kshitij Sobti's avatar Kshitij Sobti
Browse files

Add support for using an authentication database for MongoDB.

A popular convention is to have user accounts stored in a separate authentication
database. This change add support for configuring edx-platform to work with
such a setup.
parent 87c7cbde
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@ class MongoBackend(BaseBackend):
- `password`: collection user password
- `database`: name of the database
- `collection`: name of the collection
- 'auth_source': name of the authentication database
- `extra`: parameters to pymongo.MongoClient not listed above
"""
......@@ -46,6 +47,8 @@ class MongoBackend(BaseBackend):
db_name = kwargs.get('database', 'track')
collection_name = kwargs.get('collection', 'events')
auth_source = kwargs.get('auth_source') or None
# Other mongo connection arguments
extra = kwargs.get('extra', {})
......@@ -67,7 +70,7 @@ class MongoBackend(BaseBackend):
database = self.connection[db_name]
if user or password:
database.authenticate(user, password)
database.authenticate(user, password, source=auth_source)
self.collection = database[collection_name]
......
......@@ -36,6 +36,9 @@ def connect_to_mongodb(
# No 'replicaSet' in kwargs - so no secondary reads.
mongo_client_class = pymongo.MongoClient
# If the MongoDB server uses a separate authentication database that should be specified here
auth_source = kwargs.pop('auth_source', '') or None
# If read_preference is given as a name of a valid ReadPreference.<NAME> constant
# such as "SECONDARY_PREFERRED", convert it. Otherwise pass it through unchanged.
if 'read_preference' in kwargs:
......@@ -59,10 +62,9 @@ def connect_to_mongodb(
mongo_conn,
wait_time=retry_wait_time
)
# If credentials were provided, authenticate the user.
if user is not None and password is not None:
mongo_conn.authenticate(user, password)
mongo_conn.authenticate(user, password, source=auth_source)
return mongo_conn
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment