我在使用 LDAP 身份验证模块django-auth-ldap时遇到问题。我正在使用来自该站点的示例配置:http ://packages.python.org/django-auth-ldap/
我想做两件事:
1)针对LDAP进行身份验证:目前,我的LDAP数据库是空的,我没有向其中添加任何内容,实际上我不知道如何添加。但是,我仍然可以使用存储在 django 数据库中的旧登录名/密码登录到基于 django 的站点。这是为什么?这不应该被忽略,登录过程不应该使用 LDAP 用户/密码来代替吗?换句话说,如果我的 LDAP 数据库是空的,我的每一次登录都不应该失败吗?但是,事实并非如此,我的印象是 django 完全忽略了 django-auth-ldap 模块。
2) 将 LDAP 与 django 同步(而不是相反)我不想使用现有的用户数据库进行身份验证。我希望能够在 Django 中创建新用户并将这些用户传播到 LDAP,以便它们可以被其他服务共享,在我的例子中是一个 openfire 服务器。你如何用 django-auth-ldap 做到这一点?
这是我的配置的复制/粘贴:
# Baseline configuration.
AUTH_LDAP_SERVER_URI = "127.0.0.1"
AUTH_LDAP_BIND_DN = "cn=admin,dc=nodomain"
AUTH_LDAP_BIND_PASSWORD = "admin"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=nodomain",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
# Set up the basic group parameters.
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=django,ou=groups,dc=nodomain",
ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)"
)
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="cn")
# Only users in this group can log in.
AUTH_LDAP_REQUIRE_GROUP = "cn=enabled,ou=django,ou=groups,dc=nodomain"
# Populate the Django user from the LDAP directory.
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail"
}
AUTH_LDAP_PROFILE_ATTR_MAP = {
"employee_number": "employeeNumber"
}
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_active": "cn=active,ou=django,ou=groups,dc=nodomain",
"is_staff": "cn=staff,ou=django,ou=groups,dc=nodomain",
"is_superuser": "cn=superuser,ou=django,ou=groups,dc=nodomain"
}
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_FIND_GROUP_PERMS = True
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
# Keep ModelBackend around for per-user permissions and maybe a local
# superuser.
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
抱歉,我对 LDAP 了解不多,我今天早上才安装它,所以我的问题可能听起来很幼稚。我只需要一个能够在多个服务器之间更新和共享的集中式用户群。
非常感谢您的帮助。