首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django中的LDAP默认管理

Django中的LDAP默认管理
EN

Stack Overflow用户
提问于 2012-01-04 13:13:18
回答 2查看 7.6K关注 0票数 4

更新

如何在LDAP服务器上而不是在默认数据库上进行Django默认管理身份验证?我已经找到了包Django Auth LDAP,但没有配置它以供管理员登录使用。除了LDAP配置之外,我还尝试将下面的行放在settings.py中:

代码语言:javascript
复制
AUTHENTICATION_BACKENDS = (
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
)

但不起作用。如果删除最后一行,它将不会在LDAP上进行身份验证,并向我显示默认的auth错误,因为ModelBackend是次要的。我尝试过复制和修改文档中列出的信任,并且在控制台上得到了这个错误:

代码语言:javascript
复制
Caught LDAPError while authenticating karlisson: INVALID_DN_SYNTAX({'info': 'invalid DN', 'desc': 'Invalid DN syntax'},)

我的settings.py:

代码语言:javascript
复制
AUTH_LDAP_SERVER_URI = "ldap://192.168.0.2"

AUTH_LDAP_BIND_DN = "example_nt"
AUTH_LDAP_BIND_PASSWORD = "example"
AUTH_LDAP_USER_SEARCH = LDAPSearch("cn=admin,dc=example_nt,dc=com,dc=br",
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

不知道哪里有语法错误,LDAP初学者。

EN

回答 2

Stack Overflow用户

发布于 2012-01-04 13:54:36

管理员登录应该与正常登录相同的工作方式。仅仅添加后端是不够的,您需要配置它。医生们说了很多话:

您可能需要设置如下:

代码语言:javascript
复制
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_active": "cn=active,ou=groups,dc=example,dc=com",
    "is_staff": "cn=staff,ou=groups,dc=example,dc=com",
    "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com"
}

这些标志是管理人员使用的IIRC,至少是is_superuser

但最重要的是settings.py中的这些东西

代码语言:javascript
复制
AUTH_LDAP_SERVER_URI = "ldap://ldap.example.com"
import ldap
from django_auth_ldap.config import LDAPSearch

AUTH_LDAP_BIND_DN = ""
AUTH_LDAP_BIND_PASSWORD = ""
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=users,dc=example,dc=com",
    ldap.SCOPE_SUBTREE, "(uid=%(user)s)")

请尝试配置所有这些东西以连接到ldap,如果您仍然遇到问题,我们可以尝试从那里调试它。

另外,如果向ldap发送了请求,也可以尝试获取调试信息(也许还可以检查ldap生成的日志,看看它是否接收了来自应用程序的请求)。

票数 12
EN

Stack Overflow用户

发布于 2013-10-02 19:10:11

bindDN必须是一个可分辨的名称。example_nt不是一个可区分的名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8727486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档