Mam problemy z modułem uwierzytelniającym LDAP django-auth-ldap. Używam przykładową konfigurację z tej strony: http://packages.python.org/django-auth-ldap/Tworzenie użytkowników w LDAP przy użyciu Django
Chciałbym zrobić dwie rzeczy:
1) Authentificate przeciwko LDAP: W tej chwili moja baza danych LDAP jest pusta, ja nie dodawać cokolwiek do tego, w rzeczywistości nie wiem jak. Jednak nadal jestem w stanie zalogować się w mojej witrynie opartej na django z moimi starymi logami/hasłami przechowywanymi w mojej bazie danych django. Dlaczego? Czy nie należy tego zignorować, czy proces logowania nie powinien się odbywać z użytkownikiem/hasłami LDAP? Innymi słowy, jeśli moja baza danych LDAP jest pusta, czy nie powinno się polegać na każdym moim logowaniu? Jednak nie ma, mam wrażenie, że django całkowicie ignoruje moduł django-auth-ldap.
2) Synchronizuj LDAP z django (a nie odwrotnie) Nie chcę używać istniejącej bazy danych użytkownika do uwierzytelniania. Chcę móc tworzyć nowych użytkowników w Django i propagować tych użytkowników do LDAP, aby mogli być udostępniani przez inne usługi, w moim przypadku serwer openfire. Jak to zrobić z django-auth-ldap?
Oto copy/paste mojej konfiguracji:
# 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',
)
Niestety nie wiem zbyt wiele o LDAP, Właśnie zainstalowałem go dziś rano, więc moje pytanie może wydawać się naiwne. Potrzebuję tylko scentralizowanej bazy użytkowników, którą będę mógł aktualizować i udostępniać między kilkoma serwerami.
Dziękuję bardzo za pomoc.