Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django-auth-ldap installation not working

I am trying to install django-auth-ldap in my windows system it shows the following error

\pip-build-3x6rkxb4\pyldap\modules\errors.h(8): fatal error C1083: Cannot open include file: 'lber.h': No such file or directory error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2

# LDAP auth settings.
LDAP_AUTH_URL = os.environ.get("LDAP_AUTH_URL", "ldap://xxx.xx.xx.xx:389")
LDAP_AUTH_USE_TLS = False

LDAP_AUTH_SEARCH_BASE = "dc=maxcrc,dc=com" 
LDAP_AUTH_OBJECT_CLASS = "inetOrgPerson"
LDAP_AUTH_USER_FIELDS = {
    "username": "uid",
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail",
}
LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)
LDAP_AUTH_CLEAN_USER_DATA = "django_python3_ldap.utils.clean_user_data"
LDAP_AUTH_SYNC_USER_RELATIONS = "django_python3_ldap.utils.sync_user_relations"
LDAP_AUTH_FORMAT_SEARCH_FILTERS = "django_python3_ldap.utils.format_search_filters"
LDAP_AUTH_FORMAT_USERNAME = "django_python3_ldap.utils.format_username_openldap"
LDAP_AUTH_ACTIVE_DIRECTORY_DOMAIN = None 
LDAP_AUTH_CONNECTION_USERNAME = "cn=Manager,dc=maxcrc,dc=com" 
LDAP_AUTH_CONNECTION_PASSWORD = "*****" 

LDAP_AUTH_CONNECT_TIMEOUT = None
LDAP_AUTH_RECEIVE_TIMEOUT = None

AUTHENTICATION_BACKENDS = (
    "django_python3_ldap.auth.LDAPBackend",
)

My versions are Python - 3.6.3 (64bit) Django - 1.11.6 (64bit) Windows 10 - 64bit

Thanks

like image 295
Murali Avatar asked Nov 01 '17 05:11

Murali


People also ask

What is LDAP authentication in Django?

This is a Django authentication backend that authenticates against an LDAP service. Configuration can be as simple as a single distinguished name template, but there are many rich configuration options for working with users, groups, and permissions. This version is supported on Python 3.6+; and Django 2.2+. It requires python-ldap >= 3.1.

What is Django-Auth-LDAP?

GitHub - django-auth-ldap/django-auth-ldap: Django authentication backend that authenticates against an LDAP service. Loading status checks… Instead of keeping a changelog (which is often forgotten), use the GitHub releases feature.

How to add Auth backend to a Django project?

To use the auth backend in a Django project, add 'django_auth_ldap.backend.LDAPBackend' to AUTHENTICATION_BACKENDS. Do not add anything to INSTALLED_APPS.

What version of Django do I need for configuration?

Configuration can be as simple as a single distinguished name template, but there are many rich configuration options for working with users, groups, and permissions. This version is supported on Python 3.6+; and Django 2.2+. It requires python-ldap >= 3.1.


2 Answers

django-auth-ldap needs to be compiled due to its dependencies. Especially on Windows, I'd recommend trying a pure Python solution. The one I use which works very well, is django-python3-ldap, which you can find here:

https://github.com/etianen/django-python3-ldap

Here is how I set up the settings, so that we can connect using these values with ldap3 directly as well:

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'django_python3_ldap.auth.LDAPBackend',
]

# LDAP Connection Settings
LDAP_AUTH_HOST = 'ldap.example.com'
LDAP_AUTH_PORT = 636
LDAP_AUTH_URL = 'ldaps://{host}:{port}'.format(
    host=LDAP_AUTH_HOST,
    port=LDAP_AUTH_PORT,
)
LDAP_AUTH_CONNECTION_USERNAME = 'ldapuser'
LDAP_AUTH_CONNECTION_PASSWORD = 'ldappassword'

# Initiate TLS on connection.
LDAP_AUTH_USE_TLS = True

# The LDAP search base for looking up users.
LDAP_AUTH_SEARCH_BASE = "ou=People,dc=example,dc=com"

# The LDAP class that represents a user.
LDAP_AUTH_OBJECT_CLASS = "shadowAccount"

# User model fields mapped to the LDAP
# attributes that represent them.
LDAP_AUTH_USER_FIELDS = {
    "username": "uid",
}

# A tuple of fields used to uniquely identify a user.
LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)

The README also includes instructions for Active Directory, if that's what you're connecting to. Good luck!

like image 173
FlipperPA Avatar answered Oct 17 '22 06:10

FlipperPA


For those who, like me, cannot leave django-auth-ldap for whatever reason: I solved downloading and installing the binary wheel of python-ldap from here

https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap

I hope this helps

like image 45
marco Avatar answered Oct 17 '22 06:10

marco