Python-ldap可以从python控制台连接到活动目录,但不能连接到应用程序



我正在尝试使用Python-ldap库连接到活动目录。 我有以下绑定代码:

def bind_connection():
ldap_password = *******
ldap_url = 'ldaps://*******:636
ldap_login = "CN=***, CN=Users, DC=***, DC=local"
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
l = ldap.initialize(ldap_url)
l.set_option(ldap.OPT_REFERRALS, 0)
l.set_option(ldap.OPT_PROTOCOL_VERSION, 3)
l.set_option(ldap.OPT_X_TLS, ldap.OPT_X_TLS_DEMAND)
l.set_option(ldap.OPT_X_TLS_DEMAND, True)
l.set_option(ldap.OPT_DEBUG_LEVEL, 255)
l.simple_bind_s(ldap_login, ldap_password)
return l

在 python 控制台中导入并运行它工作正常。我可以使用此绑定进行搜索、创建用户等。

尝试在 Django 应用程序中使用此类返回:

SERVER_DOWN: {'info': 'SSLHandshake() failed: misc. bad certificate
(-9825)', 'errno': 2, 'desc': "Can't contact LDAP server"}

所有代码都在同一开发环境中运行。 为什么它会在一种情况下起作用,而在另一种情况下不起作用?

能够弄清楚。我在python-ldap库提供的演示中找到了这一点。

# Force libldap to create a new SSL context (must be last TLS option!)
l.set_option(ldap.OPT_X_TLS_NEWCTX,0)

必须创建新的 SSL 上下文,此选项将执行此操作。

相关内容

最新更新