Skip to main content

PyMongo-Smart-Auth

PyPI version

About

This package extends PyMongo's MongoClient to provide built-in smart authentication. It simplifies authentication by:

  • automatically authenticating when creating the connection instead of having to manually call authenticate on the authentication database
  • if an authenticated client was created without passing any credentials, it authenticates by:
    1. looking for a MONGO_CREDENTIAL_FILE environment variable and associated kwargs in the constructor to format it, if applicable
    2. looking for a MONGO_AUTHENTICATED_URI environment variable
    3. looking for credentials in the MONGO_AUTHENTICATION_DATABASE, MONGO_USERNAME and MONGO_PASSWORD environment variables
    4. looking for a .mongo_credentials file in the user's home
    5. looking for a mongo_credentials file in the /etc folder

It also allows the user to specify the path to another credentials file or pass credentials directly.

Installation

pip install pymongo-smart-auth

Usage

The MongoClient class from the PyMongo-Smart-Auth package is a drop-in replacement for PyMongo's MongoClient that simplifies authentication management.

The constructor works in the same way as the MongoClient constructor with four additional parameters, all optional:

  • username: the username to authenticate with
  • password: the password to authenticate with
  • credentials_file: a file where credentials can be found
  • authenticate: a boolean indicating whether the client should authenticate (defaults to True)

Credentials file

When using a credentials file, it should either have:

  • a single line with a fully authenticated URI

  • the authentication database on the first line, the user on the second and the password on the third. Empty lines are ignored. Example file:

      admin
      administrator
      P4ssw0rd
    

Credential lookup order

Upon initialisation with the default authenticate=True, the client looks for credentials in the following order:

  1. The username and password parameters
  2. The passed credentials_file
  3. The MONGO_CREDENTIAL_FILE environment variable formatted with the kwargs of the constructor, if applicable
  4. The MONGO_AUTHENTICATED_URI environment variable
  5. The MONGO_AUTHENTICATION_DATABASE, MONGO_USERNAME and MONGO_PASSWORD environment variables
  6. The .mongo_credentials file in the user's home
  7. The mongo_credentials file in the /etc folder

Usage examples

from pymongo_smart_auth import MongoClient

# Explicit user and password
mongo1 = MongoClient(username='user', password='p4ssw0rd')
database1 = mongo1['database1'] # Automatically authenticated

# Explicit user and password with separate authentication database
mongo2 = MongoClient(username='user', password='p4ssw0rd', authentication_database='mongo_users')
database2 = mongo2['database2'] # Automatically authenticated

# Will read /some/path/mongo_credentials
mongo3 = MongoClient(credentials_file='/some/path/mongo_credentials')
database3 = mongo3['database3'] # Automatically authenticated

# Will read the file in the MONGO_CREDENTIAL_FILE environment variable if set,
# then the file in MONGO_CREDENTIAL_FILE environment variable if set,
# then the MONGO_AUTHENTICATION_DATABASE, MONGO_USERNAME and MONGO_PASSWORD environment variables if set,
# then ~/.mongo_credentials if it exists,
# otherwise /etc/mongo_credentials
mongo4 = MongoClient()
database4 = mongo4['database4'] # Automatically authenticated

# Will authenticate with a file defined in the environment with a keyword argument
# Assuming MONGO_CREDENTIAL_FILE=/etc/credentials_{group},
# this will authenticate with the credentials in /etc/credentials_my_group
mongo5 = MongoClient(group='my_group')
database5 = mongo6['my_group_database'] # Automatically authenticated

# Will not authenticate
mongo6 = MongoClient(authenticate=False)
database6 = mongo5['database5'] # Not authenticated

License

This project is licensed under the terms of the MIT license.

Metadata

Release files for pymongo-smart-auth 2.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymongo-smart-auth 2.1.1
File Size Uploaded
pymongo_smart_auth-2.1.1.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pymongo-smart-auth 2.1.1
File Interpreter ABI Platform
pymongo_smart_auth-2.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 kB

Release files / pymongo_smart_auth-2.1.1.tar.gz

Download URL pymongo_smart_auth-2.1.1.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
81663562d324ade06f20ade13f045302ae16ab6adf047647f6274fd80b8e1c2d
BLAKE2b-256 checksum
How to use checksums
bdf95ec518c37ab3780c496fcd2014081462e8541acb9b853fc317d78ef2fa6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.4

Release files / pymongo_smart_auth-2.1.1-py3-none-any.whl

Download URL pymongo_smart_auth-2.1.1-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5590dd9f8527c727076774f2a81c5c532838cc38236b58b8f7fb691f285814e2
BLAKE2b-256 checksum
How to use checksums
79a4f92d2103efcece2b9b6ac289bdd7e0944497e3709ccc3c4e23ac207616a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.4

Release history Release notifications | RSS feed

2.1.3

2 release files

2.1.2

2 release files

This release

2.1.1 This release

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page