python-Django-Ldap-Authentication

我正在尝试使用django中的LDAP服务器对用户进行身份验证.

我已经将我的settings.py配置如下:

AUTH_LDAP_SERVER_URI = "ldap.forumsys.com"
AUTH_LDAP_BIND_DN = "cn=read-only-admin,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD = "password"
AUTH_LDAP_USER_SEARCH = LDAPSearch("dc=example,dc=com",
    ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
AUTH_LDAP_START_TLS = True


AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
    )

在我看来,我尝试使用LDAPBACKEND对其进行身份验证

from django.http import HttpResponse
from django_auth_ldap.backend import LDAPBackend
from django.contrib.auth.models import User


from django.conf import settings


def login_user(request):

    state = ""

    username = settings.AUTH_LDAP_BIND_DN
    password = settings.AUTH_LDAP_BIND_PASSWORD

    auth = LDAPBackend()

    try:
        User = auth.authenticate(username=username,password=password) 
        if User is not None:
            state = "Valid"

        else:
            state = "Invalid"

    except LDAPError as e:
            state = "Error"

    return HttpResponse(state)  

但我得到一个错误

LDAPError while authenticating cn=read-only-admin,dc=example,dc=com:
LDAPError(0,’Error’)

我确实还有另一个疑问.用户名和密码是否与bind_username和bind_password相同?

解决方法:

我在LDAP方面的经验并未要求更改任何视图.我使用了django-auth-ldap库,该库只需要使用其他设置即可:

#-----------------------------------------------------------------------------#
#
#   LDAP Settings
#
#-----------------------------------------------------------------------------#

AUTHENTICATION_BACKENDS += ('django_auth_ldap.backend.LDAPBackend',) 

AUTH_LDAP_SERVER_URI = "ldaps://your.ldap.server"

AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,ou=users,dc=example,dc=com"

使用绑定登录还可以与以下其他设置一起使用:

import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = "<user>"
AUTH_LDAP_BIND_PASSWORD = "<password>"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com",ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

正常的Django登录视图可以在此设置下正常运行.

编辑:我应该补充一点,在尝试使用Django之前,应该先通过服务器上的命令行确认LDAP是否正常工作.这就是让我起初的原因.

上一篇:php-使用Symfony 2.8中的新LDAP组件进行身份验证


下一篇:Spring LDAP Context.REFERRAL遵循