直截了当:我设法使这个脚本工作:
import os
from ldap3 import Connection, Tls, Server
import ssl
tls_configuration = Tls(validate=ssl.CERT_REQUIRED, version=ssl.PROTOCOL_TLSv1)
server = Server('ldap://myserver.org:389', use_ssl=True, tls=tls_configuration)
conn = Connection(server, user="DOMAIN\\"+os.environ.get( "USERNAME" ), password=pwd) # Username and password previously obtained
if conn.bind():
print("OK LOGGED")
else:
print("NOT LOGGED")
问题是:这种方法可以被认为是多么安全? 我可以在Python 3中使用任何替代方案吗?
谢谢大家。
答案 0 :(得分:1)
这是保护ldap连接的正确方法,但代码中存在一些问题:
通常ldap使用636端口进行安全连接;端口389用于明文。但这可以通过服务器配置进行更改。
您使用的TLS版本1相当于过时的SSL版本3,您应该使用TLS1.2,但服务器必须支持此版本。
在Tls对象中指定validate=ssl.CERT_REQUIRED
,但不传递任何CA文件。这意味着您依靠操作系统来验证证书。
因此,只有先前的问题得到解决,您的连接才是安全的。