我正在使用很棒的 ldap3 包,我正在尝试连接事件目录服务器,但不需要以纯文本形式提供实际凭据。
支持以下 SASL 机制。
['GSSAPI', 'GSS-SPNEGO', 'EXTERNAL', 'DIGEST-MD5']
我尝试安装 GSSAPI 包,但它在我的 Windows 机器上不起作用。
pip install gssapi
的错误是:
subprocess.CalledProcessError:命令“krb5-config --libs gssapi”返回非零退出状态 1。
有人可以为此提供一个简单的例子吗? 我相信 GSS-SPNEGO 可能是解决方案,但我没有在互联网上找到任何易于理解的示例。
最佳答案
谢谢你提出这个问题。我今天给了它最后一击,让它开始工作。
它要求您拥有 ldap3 软件包并安装 winkerberos 软件包:
pip install winkerberos
然后您需要将您的站点包 (PYTHON_HOME\Lib\site-packages\ldap3\protocol\sasl\kerberos.py
) 中的 kerberos.py 文件替换为他链接到的文件replacement kerberos.py .
您需要在替换的 kerberos.py 文件中更改以下行:
from treadmill import kerberoswrapper as kerberos
更改为
import winkerberos as 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 服务器使用的任何协议(protocol)。
如果有人有更简单的方法来完成这个,请加入!
关于python - 来自 Windows 客户端的无密码 Python LDAP3 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279503/