我使用ModelBackend(默认)运行Django-1.7.7,用户少,2组。
现在我已经使用Model Backend实现了Ldap Backend。 但之后我必须自动将所有Ldap Authenticated用户添加到其中一个Model组,当用户进行Authenticated时。
有没有办法实现这个目标?
答案 0 :(得分:1)
看看这个包: https://pythonhosted.org/django-auth-ldap/
并在这篇旧帖子中: https://www.djm.org.uk/posts/using-django-auth-ldap-active-directory-ldaps/
答案 1 :(得分:0)
您可以使用Django LDAP功能避免在模型中存储用户。您应该“询问”您的LDAP服务器,如果该用户的凭据是正确的,那么您可以执行以下操作:将用户名存储在变量会话中,重定向到特定页面,在每个页面中您都可以检查是否使用用户名变量会话是正确的,等等......
- SETTINGS.PY -
# LDAP Configuration.
import ldap
from django_auth_ldap.config import LDAPSearch
AUTHENTICATION_BACKENDS = (
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
)
# Binding and connection options.
# Address (by IP or Hostname) of LDAP Server (Directory Active)
AUTH_LDAP_SERVER_URI = "ldap://xxx.xxx.x.xxx"
# DN of user through we bind to LDAP Server.
AUTH_LDAP_BIND_DN = "CN=xxx, CN=xxx, DC=xxx, DC=xxx"
# Password of user through we bind to LDAP Server.
AUTH_LDAP_BIND_PASSWORD = "xxxxxx"
# Node where we start to search users. Use to be DN (of random user) without the last one parameter.
AUTH_LDAP_USER_SEARCH = LDAPSearch("CN=xxx, DC=xxx, DC=xxx", ldap.SCOPE_SUBTREE, "(samAccountName=%(user)s)")
然后您可以在视图中使用它,以便检查是否存在特定用户:
- VIEWS.PY -
con = ldap.initialize("ldap://ldapserver")
con.simple_bind_s( userDN, passwordUser )
filter = '(sAMAccountName=' + "loginName" + ')'
user = con.search_s( base_dn, ldap.SCOPE_SUBTREE, filter, attrs )
con.unbind()