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

问题描述 投票:2回答:1

我正在使用伟大的ldap3包,我正在尝试连接活动目录服务器,但不需要以纯文本形式提供实际凭据。

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

我尝试安装GSSAPI包,但这在我的Windows机器上不起作用。 pip install gssapi的错误是:subprocess.CalledProcessError: Command 'krb5-config --libs gssapi' returned non-zero exit status 1.

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

python windows authentication active-directory ldap
1个回答
5
投票

谢谢你问这个。我今天给了它最后一次射击并让它上班。

请参阅此链接中的Davide的答案:How to install gssapi python module on windows?

它要求您拥有ldap3包并安装winkerberos包:

pip安装winkerberos

然后,您需要将站点包中的kerberos.py文件(PYTHON_HOME \ Lib \ site-packages \ ldap3 \ protocol \ sasl \ kerberos.py)替换为链接到replacement 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()

将server_fqdn替换为AD服务器的完全限定域名。

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

如果某人有一个不那么混乱的方法来实现这一点,请加入!

© www.soinside.com 2019 - 2024. All rights reserved.