2011-06-19 24 views
9

LDAP kimlik doğrulama modülü django-auth-ldap ile sorun yaşıyorum. Ben bu siteden örnek yapılandırma kullanıyorum: http://packages.python.org/django-auth-ldap/Django kullanarak LDAP içinde kullanıcı oluşturma

iki şey yapmak istiyorum

: LDAP karşı

1) kimlik denetiminin yapılması: Şu an için , benim LDAP veritabanı boş, ben eklemek vermedi Ona bir şey, aslında nasıl bilmiyorum. Ancak, django veritabanımda saklanan eski giriş/şifrelerimle hala django tabanlı siteme giriş yapabiliyorum. Neden? Bu göz ardı edilmemelidir, giriş işlemi yerine LDAP kullanıcısı/parolaları ile yapılmamalıdır? Başka bir deyişle, LDAP veritabanım boşsa, her girişimin başarısız olması gerekmez mi? Ancak, django'nun django-auth-ldap modülünü tamamen yok saydığı izleniminde değil.

2) LDAP'yi django ile senkronize edin (diğer yöntemle değil) Olası bir kullanıcı veritabanını kullanmak için kullanmak istemiyorum. Django'da yeni kullanıcılar oluşturabilmek ve bu kullanıcıları diğer hizmetlerle paylaşabilmeleri için LDAP'a yaymak istiyorum, benim durumumda bir açık ateş sunucu. Bunu django-auth-ldap ile nasıl yapıyorsun? İşte

benim konfigürasyonun kopyala/yapıştır geçerli:
# 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', 
) 

Üzgünüm LDAP hakkında çok şey bilmiyorum, ben sadece bu yüzden benim sorum naif gelebilir bu sabah yüklü. Sadece birkaç sunucu arasında güncelleme ve paylaşabileceğim merkezi bir kullanıcı tabanına ihtiyacım var.

Yardımlarınız için çok teşekkürler. Başarılı bir bulduğunda (veya) o bitene kadar kadar

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

Django sırayla her birine karşı kimlik doğrulaması çalışacaktır:

cevap

7

1) Konfigürasyonunuz yüklü iki kimlik doğrulama arka uçları vardır. LDAP dizininiz boş olduğundan, muhtemelen her zaman başarısız olacaktır, bu nedenle ModelBackend her zaman bir çekim olacaktır. Kullanıcıları Django kullanıcı veritabanına karşı kimlik doğrulamak istemiyorsanız, ModelBackend'i listeden kaldırmanız gerekir.

2) django-auth-ldap, Django kullanıcılarını yalnızca diğer yollarla LDAP'ye yaymaz. Django dağıtımlarının, ayrı ayrı yönetilen mevcut LDAP hizmetlerine karşı kimlik doğrulamasına izin verecek şekilde tasarlanmıştır. Bir LDAP dizininin içeriğini bir Django uygulamasından değiştirmek için django-ldapdb'a bakmak isteyebilirsiniz.

İlgili konular