如何使用django-auth-ldap实现身份验证?

use*_*809 12 django ldap openldap django-authentication django-auth-ldap

我有一个使用django运行的应用程序.现在我只想通过openldap服务器进行身份验证的用户看到"他们的视图"(因此我在成功验证后只需要他们的uid)

我怎样才能实现这一目标?

我想django-auth-ldap是要走的路,所以我整天都试着去了解身份验证的实际发生地点以及如何让用户的uid请求查看.

我使用settings.py文档,但我无法找到如何"实际使用"它.也许有人可以指出我正确的方向?

settings.py:

import ldap

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

AUTH_LDAP_SERVER_URI = "ldap://123.60.56.61"

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s,dc=rd,dc=corpintra,dc=net"
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:我已经可以使用python-ldap执行ldap-searche并在命令行上获得类似ldapsearch的结果,所以其他一切都运行得很好......)

我的观点需要什么?

谢谢你的帮助!

Tho*_*mas 7

这是我们其中一个网站的摘录.

# Django Auth Ldap
main_dn = 'dc=____,dc=organisation,dc=com'
groups_dn = 'ou=Groups,'+main_dn
users_dn = 'ou=Users,'+main_dn

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

AUTH_LDAP_SERVER_URI = "ldap://ldap.organisation.com"
AUTH_LDAP_BIND_DN = 'cn=___,'+main_dn
AUTH_LDAP_BIND_PASSWORD = "__________________"
AUTH_LDAP_USER_SEARCH = LDAPSearch(users_dn, 2, "(uid=%(user)s)")
AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail"
}
AUTH_LDAP_MIRROR_GROUPS = True
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_GROUP_TYPE = PosixGroupType()
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(groups_dn, ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)")

AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_staff":         "cn=admins,"+groups_dn,
    "is_superuser":     "cn=developers,"+groups_dn,
}
Run Code Online (Sandbox Code Playgroud)

编辑:

由于问题是"我的观点中需要什么?",答案是此配置会将用户的uid保存为User模型上的用户名字段,因此在您的视图中,您需要

uid = request.user.username
Run Code Online (Sandbox Code Playgroud)

希望这会让你起步并运行.