Windows客户端的无密码Python LDAP3身份验证

Bes*_*ame 3 python windows authentication ldap active-directory

我正在使用优质的ldap3软件包,并且尝试与活动目录服务器连接,但无需提供纯文本形式的实际凭据。

支持以下SASL机制。 ['GSSAPI', 'GSS-SPNEGO', 'EXTERNAL', 'DIGEST-MD5']

我尝试安装软件包GSSAPI,但在Windows计算机上不起作用。错误发生在 pip install gssapisubprocess.CalledProcessError: Command 'krb5-config --libs gssapi' returned non-zero exit status 1.

有人可以为此提供一个简单的例子吗?我相信GSS-SPNEGO可能是解决方案,但我在互联网上找不到任何可理解的例子。

小智 6

谢谢你问这个。我今天给了它最后一枪,让它起作用。

请参阅此链接中Davide的回答:如何在Windows上安装gssapi python模块?

它要求您具有ldap3软件包并安装winkerberos软件包:

点安装winkerberos

然后,您需要用他链接到替换kerberos.py的文件替换站点包中的kerberos.py文件(PYTHON_HOME \ Lib \ site-packages \ ldap3 \ protocol \ sasl \ kerberos.py)。

您需要在替换的kerberos.py文件中更改以下行:

从跑步机上导入kerberoswrapper作为kerberos

改成

将winkerberos导入为kerberos

然后您可以像这样连接:

from ldap3 import Server, Connection, Tls, SASL, GSSAPI
import ssl

tls = Tls(validate=ssl.CERT_NONE, version=ssl.PROTOCOL_TLSv1)
server = Server('server_fqdn', use_ssl=True, tls=tls)
c = Connection(server, authentication=SASL, sasl_mechanism=GSSAPI)
c.bind()
print(c.extend.standard.who_am_i())
c.unbind()
Run Code Online (Sandbox Code Playgroud)

用AD服务器的标准域名替换server_fqdn。

您可能需要将版本值更改为AD服务器使用的任何协议。

如果有人没有那么麻烦的方法来完成此操作,请发出提示!