繁体   English   中英

Python LDAP和Active Directory问题

[英]Python LDAP and Active Directory issue

我会尝试尽可能多地包含细节,但请考虑以下情况:

对于隐私问题,我可以说我有一个如下所示的Active Directory基础结构:

microsoft.com
和一些子域名:
csharp.microsoft.com
vb.microsoft.com

所有用户帐户都存储在microsoft.com上。

我用以下内容开始我的代码:

import ldap
ldap.set_option(ldap.OPT_REFERRALS,0)
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_NEVER)

(我知道我应该有域名证书,但你能做什么)

然后,我建立如下连接:

conn = ldap.initialize("ldaps://microsoft.com:636")
conn.simple_bind_s("user","pass")

在我的脚本中,我正在搜索用户帐户,并使用以下搜索:

result_id = conn.search("DC=microsoft,DC=com",
                                ldap.SCOPE_SUBTREE,
                                "(&(CN=gates)(!(objectClass=contact)))",
                                None)
result_type,result_data = conn.result(result_id,0)

好的,所以这很有效....大多数时候。
当它确实有效时,我会得到以下效果:

[("CN=gates,OU=Users,DC=microsoft,DC=com", {'sAMAccountName':['gates']}])

但是,似乎随机,我会得到如下结果:

[(None, ['ldaps://csharp.microsoft.com/DC=csharp,DC=microsoft,DC=com'])]

虽然结果有意义 - 在csharp.microsoft.com上不存在门,他存在于microsoft.com DC - 它仍然非常令人费解,因为我认为使用OPT_REFERRALS设置为0将告诉Python LDAP模块不使用转介。 为了使事情更有趣,我有时也得到如下结果:

[(None, ['ldaps://ForestDnsZones.microsoft.com/DC=ForestDnsZones,DC=microsoft,DC=com'])]

所以我的问题 - 我有什么问题吗?

此外,有人建议,如果我使用像“OU = Users,DC = microsoft,DC = com”这样的搜索路径而不是仅仅从根(“DC = microsoft,DC = com”)搜索LDAP客户端模块不会尝试使用推荐 - 这是准确的吗?

编辑

问题结果是与LDAP无关,而是WSGI错误配置。 使用WSGIDaemonProcess解决了我们遇到的交叉污染问题。

将ldap.OPT_REFERRALS设置为0会告诉服务器不要“追逐”引用,即不要解析引用。

作为第一个元素的无结果是服务器告诉你“这是推荐,但你告诉我不要追逐它”的方式。 至少这是我的理解。

如果您不想引荐,只需忽略第一个元素为None的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM