Skip to main content

An LDAP database backend for Django

Project description

https://secure.travis-ci.org/django-ldapdb/django-ldapdb.png?branch=master Latest Version Supported Python versions Wheel status License

django-ldapdb is an LDAP database backend for Django, allowing to manipulate LDAP entries through Django models.

It supports most of the same APIs as a Django model:

  • MyModel.objects.create()

  • MyModel.objects.filter(x=1, y__contains=2)

  • Full admin support and browsing

django-ldapdb supports Django versions 1.11 / 2.0, and Python 2.7 / 3.4 / 3.5 / 3.6.

Installing django-ldapdb

Linux

Use pip: pip install django-ldapdb

You might also need the usual LDAP packages from your distribution, usually named openldap or ldap-utils.

Windows

django-ldapdb depends on the pyldap <https://pypi-hypernode.com/pypi/pyldap> project. Either follow its Windows installation guide, or install a pre-built version from https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyldap (choose the .whl file matching your Python/Windows combination, and install it with pip install pyldap-2.4...whl).

and then you can also install django-ldapdb with

pip install django-ldapdb

Using django-ldapdb

Add the following to your settings.py:

DATABASES = {
    'ldap': {
        'ENGINE': 'ldapdb.backends.ldap',
        'NAME': 'ldap://ldap.nodomain.org/',
        'USER': 'cn=admin,dc=nodomain,dc=org',
        'PASSWORD': 'some_secret_password',
     },
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     },
}
DATABASE_ROUTERS = ['ldapdb.router.Router']

If you want to access posixGroup entries in your application, you can add something like this to your models.py:

from ldapdb.models.fields import CharField, IntegerField, ListField
import ldapdb.models

class LdapGroup(ldapdb.models.Model):
    """
    Class for representing an LDAP group entry.
    """
    # LDAP meta-data
    base_dn = "ou=groups,dc=nodomain,dc=org"
    object_classes = ['posixGroup']

    # posixGroup attributes
    gid = IntegerField(db_column='gidNumber', unique=True)
    name = CharField(db_column='cn', max_length=200, primary_key=True)
    members = ListField(db_column='memberUid')

    def __str__(self):
        return self.name

    def __unicode__(self):
        return self.name

and add this to your admin.py:

from django.contrib import admin
from . import models

class LDAPGroupAdmin(admin.ModelAdmin):
    exclude = ['dn', 'objectClass']
    list_display = ['gid', 'name']

admin.site.register(models.LDAPGroup, LDAPGroupAdmin)
Important note:

You must declare an attribute to be used as the primary key. This attribute will play a special role, as it will be used to build the Relative Distinguished Name of the entry.

For instance in the example above, a group whose cn is foo will have the DN cn=foo,ou=groups,dc=nodomain,dc=org.

Tuning django-ldapdb

It is possible to adjust django-ldapdb’s behavior by defining a few parameters in the DATABASE section:

PAGE_SIZE (default: 1000)

Define the maximum size of a results page to be returned by the server

QUERY_TIMEOUT (default: no limit)

Define the maximum time in seconds we’ll wait to get a reply from the server (on a per-query basis).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-ldapdb-1.0.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

django_ldapdb-1.0.0-py2.py3-none-any.whl (20.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-ldapdb-1.0.0.tar.gz.

File metadata

File hashes

Hashes for django-ldapdb-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a3a2837a6ec9769fc76164b99b86ba2809c987e370bd8986b69018345f9ba682
MD5 8e4acf8d8403c0903c9c5c2f943b3982
BLAKE2b-256 c3d49100d501d0cbc7295f371087e72b6d7f66dcc2d6162889b43b5a3d95a85b

See more details on using hashes here.

File details

Details for the file django_ldapdb-1.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_ldapdb-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d0726e29ac96e966ce81dabb0cf0649bf1122fe2f71e65166cb129aebb8843d7
MD5 c9caf21bda1876996efd8d8ce532acc7
BLAKE2b-256 64fd8237c04845fa7393b1a775aef4187c612da2e751de3e996361f5e9c16920

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page