Created
April 29, 2016 15:14
-
-
Save malgorath/9fdf2dfffa71d8e1ea29e2cc71b1aec3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ldap | |
from django.conf import settings | |
from django.contrib.auth.models import User | |
from ldapper.ldap_settings import LDAP_SERVER as ldsettings | |
class LdapAdAuthenticationBackend(object): | |
def authenticate(self, username=None, password=None): | |
try: | |
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) | |
user_ldap = ldap.initialize(ldsettings[0]) | |
user_ldap.protocol_version = 3 | |
user_ldap.set_option(ldap.OPT_REFERRALS, 0) | |
user = '%[email protected]' % username | |
user_ldap.simple_bind_s(user, password) | |
except: | |
return None | |
user, created = User.objects.get_or_create(username=username) | |
created.is_staff = True | |
created.set_password(password) | |
created.save() | |
return user | |
def get_user(self, user_id): | |
try: | |
return User.objects.get(pk=user_id) | |
except User.DoesNotExist: | |
return None |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Environment: | |
Request Method: POST | |
Request URL: http://localhost:8000/ldapper/login/ | |
Django Version: 1.9.5 | |
Python Version: 2.7.11 | |
Installed Applications: | |
['django.contrib.admin', | |
'django.contrib.auth', | |
'django.contrib.contenttypes', | |
'django.contrib.sessions', | |
'django.contrib.messages', | |
'django.contrib.staticfiles', | |
'ldapper', | |
'links'] | |
Installed Middleware: | |
['django.middleware.security.SecurityMiddleware', | |
'django.contrib.sessions.middleware.SessionMiddleware', | |
'django.middleware.common.CommonMiddleware', | |
'django.middleware.csrf.CsrfViewMiddleware', | |
'django.contrib.auth.middleware.AuthenticationMiddleware', | |
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', | |
'django.contrib.messages.middleware.MessageMiddleware', | |
'django.middleware.clickjacking.XFrameOptionsMiddleware'] | |
Traceback: | |
File "/home/username/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response | |
149. response = self.process_exception_by_middleware(e, request) | |
File "/home/username/.local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response | |
147. response = wrapped_callback(request, *callback_args, **callback_kwargs) | |
File "/home/username/PycharmProjects/internal/src/ldapper/views.py" in login_user | |
18. user = authenticate(username=username, password=password) | |
Exception Type: NameError at /ldapper/login/ | |
Exception Value: global name 'authenticate' is not defined |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AUTHENTICATION_BACKENDS = ( | |
'internal.authentication.LdapAdAuthenticationBackend', | |
'django.contrib.auth.backends.ModelBackend', | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.views.generic.edit import FormView | |
from ldap_settings import LDAP_SERVER as ldsettings | |
from django.contrib.auth import login, logout | |
from django.shortcuts import render, redirect, HttpResponse | |
from ad_ldap.ad_ldap import Domain | |
from ad_ldap.errors import * | |
from .forms import ChangePasswordForm | |
def login_user(request): | |
if request.POST: | |
username = request.POST.get('username') | |
password = request.POST.get('password') | |
user = authenticate(username=username, password=password) | |
if user is not None: | |
login(request, user) | |
else: | |
return render(request, 'ldapper/auth.html', {'state': 'Invalid Login/Password'}) | |
else: | |
return render(request, 'ldapper/auth.html') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment