我正在尝试使用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"}
所有代码都是从同一个开发环境运行的。 为什么它在一个实例中而不在另一个实例中工作?
答案 0 :(得分:0)
能够弄清楚。我在随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上下文,此选项将执行此操作。