在Windows域中使用python3进行安全LDAP身份验证

时间:2018-03-07 08:27:25

标签: python-3.x ldap

直截了当:我设法使这个脚本工作:

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中使用任何替代方案吗?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

这是保护ldap连接的正确方法,但代码中存在一些问题:

  • 通常ldap使用636端口进行安全连接;端口389用于明文。但这可以通过服务器配置进行更改。

  • 您使用的TLS版本1相当于过时的SSL版本3,您应该使用TLS1.2,但服务器必须支持此版本。

  • 在Tls对象中指定validate=ssl.CERT_REQUIRED,但不传递任何CA文件。这意味着您依靠操作系统来验证证书。

因此,只有先前的问题得到解决,您的连接才是安全的。