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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows客户端的无密码Python LDAP3身份验证相关的知识,希望对你有一定的参考价值。

我正在使用伟大的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可能是解决方案,但我在互联网上找不到任何可理解的例子。

答案

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

请参阅此链接中的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服务器使用的任何协议。

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

以上是关于Windows客户端的无密码Python LDAP3身份验证的主要内容,如果未能解决你的问题,请参考以下文章

无法为使用 MinIO 客户端的用户设置策略,即使用户存在于 LDAP 中,获取用户也不存在于 ldap 错误中

使用 LDAP 在 Spring oauth/token 请求上验证客户端 ID 和客户端密码

windows下配置openldap,manager的连接:LDAP error:无效的凭据

JAVA连接LDAP(Windows AD)验证时,密码为空验证通过的问题?

freeradius 3.0使用ldap bind windows ad 来认证用户

ssh的两种连接方法(包括无密码访问)